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的FTP学习(二)[转自奥索]
Oct 09 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
使用PHP编写的SVN类
Jul 18 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
PHP导入导出Excel代码
Jul 07 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
详细对比php中类继承和接口继承
Oct 11 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 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 array_intersect()函数使用代码
2009/01/14 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
HTML5附件拖拽上传drop & google.gears实现代码
2011/04/28 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
js实现拖拽效果
2015/02/12 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
Bootstrap实现翻页效果
2017/11/27 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
浅谈Python单向链表的实现
2015/12/24 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python字典的值可以修改吗
2020/06/29 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
Python的logging模块基本用法
2020/12/24 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
实现向右循环移位
2014/07/31 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
文明城市标语
2014/06/16 职场文书
心理学专业求职信
2014/06/16 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
普通党员对照检查材料
2014/09/24 职场文书
上班迟到检讨书
2015/05/06 职场文书