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自动生成后台导航网址的最佳方法
Aug 27 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
Feb 01 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
php json中文编码为null的解决办法
Dec 14 PHP
实例讲解PHP页面静态化
Feb 05 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
深入解析PHP底层机制及相关原理
Dec 11 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/03/02 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
修改发贴的编辑功能
2007/03/07 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Flask配置Cors跨域的实现
2019/07/12 Python
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
教师求职推荐信范文
2013/11/20 职场文书
好听的队名和口号
2014/06/09 职场文书
2019个人工作总结
2019/06/21 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
React自定义hook的方法
2022/06/25 Javascript