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 zend解密软件绿色版测试可用
Apr 14 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
初识laravel5
Mar 02 PHP
php获取twitter最新消息的方法
Apr 14 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 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版(2)
2006/10/09 PHP
php 404错误页面实现代码
2009/06/22 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
详谈python http长连接客户端
2017/06/12 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python异常处理操作实例详解
2018/05/10 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
python爬虫要用到的库总结
2020/07/28 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android