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 23 PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 PHP
php下封装较好的数字分页方法
Nov 23 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP生成加减算法方式的验证码实例
Mar 12 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
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
JS 控件事件小结
2012/10/31 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
js初始化验证实例详解
2016/11/26 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
一张图带我们入门Python基础教程
2017/02/05 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
python之生成多层json结构的实现
2020/02/27 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
超市创业计划书
2014/04/24 职场文书
汽车维修求职信
2014/06/15 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2015年教研工作总结
2015/05/23 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
7个关于Python的经典基础案例
2021/11/07 Python