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 相关文章推荐
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
php中explode与split的区别介绍
Oct 03 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
php验证session无效的解决方法
Nov 04 PHP
php提交表单发送邮件的方法
Mar 20 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
php在linux环境中如何使用redis详解
Dec 15 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 自定义错误处理函数的使用详解
2013/05/10 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
PHP导入导出Excel代码
2015/07/07 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python实现保存网页到本地示例
2014/03/16 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Python实现的建造者模式示例
2018/08/06 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python读取表格类型文件代码实例
2020/02/17 Python
详解python datetime模块
2020/08/17 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
初中英语教学反思
2014/01/25 职场文书
七一建党日演讲稿
2014/09/05 职场文书
大学生党员个人总结
2015/02/13 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis