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 相关文章推荐
cache_lite试用
Feb 14 PHP
php&mysql 日期操作小记
Feb 27 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php实现读取超大文件的方法
Jul 28 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
PHP单态模式简单用法示例
Nov 16 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
php和asp语法上的区别总结
May 12 PHP
因str_replace导致的注入问题总结
Aug 08 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
学习vue.js计算属性
2016/12/03 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
python中self原理实例分析
2015/04/30 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
求职自荐书范文
2013/12/04 职场文书
后进生转化工作制度
2014/01/17 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
神州牡丹园的导游词
2019/11/20 职场文书