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的FTP学习(四)
Oct 09 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 PHP
php+js实现点赞功能的示例详解
Aug 07 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
javascript实现C语言经典程序题
2015/11/29 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
Python实现单词拼写检查
2015/04/25 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
tensorflow识别自己手写数字
2018/03/14 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python中的数据结构比较
2019/05/13 Python
python数据挖掘需要学的内容
2019/06/23 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
python中spy++的使用超详细教程
2021/01/29 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
2014年妇女工作总结
2014/12/06 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server