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 身份证号验证函数
May 07 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
php session劫持和防范的方法
Nov 12 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 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的单引号和双引号 字符串效率
2009/05/27 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
大学学习个人的自我评价
2014/02/18 职场文书
公证书样本
2014/04/10 职场文书
干部作风建设工作总结
2014/10/29 职场文书
英文导游词
2015/02/13 职场文书
工程项目合作意向书
2015/05/08 职场文书
四风之害观后感
2015/06/09 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js