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 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
PHP中SESSION过期设置
Mar 09 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
1 Tube Radio
2021/03/02 无线电
PHP文件操作实现代码分享
2011/09/01 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
Python生成随机密码
2015/03/10 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
一夜的工作教学反思
2014/02/08 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
服装设计专业求职信
2014/06/16 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python