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 相关文章推荐
substr()函数中文版
Oct 09 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
php强制运行广告的方法
Dec 01 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
php 自定义错误日志实例详解
Nov 12 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 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简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
php数组键值用法实例分析
2015/02/27 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
vuex的简单使用教程
2018/02/02 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
python 写入csv乱码问题解决方法
2016/10/23 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python如何制作缩略图
2019/04/30 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
如何清空Session
2015/02/23 面试题
企划经理的岗位职责
2013/11/17 职场文书
创业女性典型材料
2014/05/02 职场文书
小学英语教学反思范文
2016/02/15 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
使用javascript解析二维码的三种方式
2021/11/11 Javascript