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 相关文章推荐
文件上传的实现
Oct 09 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
PHP5函数小全(分享)
Jun 06 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php数组查找函数总结
Nov 18 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
PHP概率计算函数汇总
Sep 13 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
Laravel 实现添加多语言提示信息
Oct 25 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python正则捕获操作示例
2017/08/19 Python
python版本单链表实现代码
2018/09/28 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
序列化Python对象的方法
2020/08/01 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
办公室秘书岗位职责范本
2014/02/11 职场文书
小班幼儿评语大全
2014/04/30 职场文书
服务之星事迹材料
2014/05/03 职场文书
贷款担保申请书
2014/05/20 职场文书
介绍信模板
2015/01/31 职场文书
大客户经理岗位职责
2015/04/09 职场文书
会议简讯范文
2015/07/20 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
Python绘画好看的星空图
2022/03/17 Python