3种php生成唯一id的方法


Posted in PHP onNovember 23, 2015

小编在网上查了许多关于php生成唯一id方法的文章,发现有很多的方法,特整理本文与大家分享php生成唯一id的解决方法,希望大家喜欢。

1、md5(time() . mt_rand(1,1000000));

这种方法有一定的概率会出现重复

2、php内置函数uniqid()

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.

w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872

function uuid() {
  if (function_exists ( 'com_create_guid' )) {
    return com_create_guid ();
  } else {
    mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.随便数播种,4.2.0以后不需要了。
    $charid = strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根据当前时间(微秒计)生成唯一id.
    $hyphen = chr ( 45 ); // "-"
    $uuid = '' . //chr(123)// "{"
substr ( $charid, 0, 8 ) . $hyphen . substr ( $charid, 8, 4 ) . $hyphen . substr ( $charid, 12, 4 ) . $hyphen . substr ( $charid, 16, 4 ) . $hyphen . substr ( $charid, 20, 12 );
    //.chr(125);// "}"
    return $uuid;
  }
}

com_create_guid()是php自带的生成唯一id方法,php5之后貌似已经没有了。
3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

public function create_guid($namespace = '') {  
  static $guid = '';
  $uid = uniqid("", true);
  $data = $namespace;
  $data .= $_SERVER['REQUEST_TIME'];
  $data .= $_SERVER['HTTP_USER_AGENT'];
  $data .= $_SERVER['LOCAL_ADDR'];
  $data .= $_SERVER['LOCAL_PORT'];
  $data .= $_SERVER['REMOTE_ADDR'];
  $data .= $_SERVER['REMOTE_PORT'];
  $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
  $guid = '{' . 
      substr($hash, 0, 8) .
      '-' .
      substr($hash, 8, 4) .
      '-' .
      substr($hash, 12, 4) .
      '-' .
      substr($hash, 16, 4) .
      '-' .
      substr($hash, 20, 12) .
      '}';
  return $guid;
 }

以上就是php生成唯一id的三种方案,希望对大家的学习有所帮助。

PHP 相关文章推荐
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
PHP重定向与伪静态区别
Feb 19 PHP
php可变长参数处理函数详解
Feb 22 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 #PHP
PHP语法小结之基础和变量
Nov 22 #PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 #PHP
PHP中使用array函数新建一个数组
Nov 19 #PHP
PHP新建类问题分析及解决思路
Nov 19 #PHP
php有效防止同一用户多次登录
Nov 19 #PHP
带你了解PHP7 性能翻倍的关键
Nov 19 #PHP
You might like
PHP4实际应用经验篇(2)
2006/10/09 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
JS触摸与手势事件详解
2017/05/09 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
法学个人求职信范文
2014/01/27 职场文书
行政人事岗位职责
2014/03/17 职场文书
创业培训计划书
2014/05/03 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
2014超市收银员工作总结
2014/11/13 职场文书