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预定义常量
Dec 25 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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
精通php的十大要点(上)
2009/02/04 PHP
PHP操作xml代码
2010/06/17 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php正则表达式(regar expression)
2011/09/10 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
计算机专业毕业生自荐信
2013/12/31 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
天坛导游词
2015/02/02 职场文书