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 06 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
PHP explode()函数用法讲解
Feb 15 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
php双向队列实例讲解
Nov 17 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获得当前的脚本网址
2007/12/10 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
lib.utf.js
2007/08/21 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python批量修改ssh密码的实现
2019/08/08 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Django ModelForm操作及验证方式
2020/03/30 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
大学生就业推荐信范文
2013/11/29 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书