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 相关文章推荐
10条PHP编程习惯助你找工作
Sep 29 PHP
PHP设计模式 注册表模式
Feb 05 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 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版自动生成文章摘要
2008/07/23 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
使用Python生成url短链接的方法
2015/05/04 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
求职信写作要突出重点
2014/01/01 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
员工试用期自我评价
2014/09/18 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
呐喊读书笔记
2015/06/30 职场文书
教师外出学习心得体会
2016/01/18 职场文书
《窃读记》教学反思
2016/02/18 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL