当前位置: 首页 > news >正文

php生成唯一ID的5种方法介绍

php生成唯一ID的5种方法介绍

工作中使用到唯一ID的场景非常多,如临时缓存文件、临时变量、临时安全码等。

uniqid()函数基于以微妙计的当前时间,生成一个唯一的ID。由于生成唯一ID与微妙时间关联,因此生成ID的唯一性非常可靠。

生成的唯一ID默认返回的字符串有13个字符长,如果再结合MD5()函数,生成的唯一ID可靠性将更高,这种生成的ID比随机性的ID最大优点在于可实现排序,特别是一些需要存储在数据库中的值。当然在这里也可以加入随机数。

下面主要介绍4种生成唯一ID的方法:

1、md5(time().mt_rand(1,1000000))

注意:这种方法有一定的概率会出现重复

2、md5(microtime(true).mt_rand(1,1000000))

注意:这种方法有一定的概率会出现重复,比上一个略好

3、php内置函数uniqid()

uniqid()函数基于以微妙的当前时间,生成一个唯一的ID。

echo uniqid();echo uniqid();echo uniqid();OUTPUT:5a4b62dd4aeea5a4b62dd4aff75a4b62dd4b069

w3school参考手册有一句话:“由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数”。

4、结合md5()函数生成一个唯一的ID

echo md5(uniqid());
OUTPUT:0ac3d6e99b7f5290c93d730eaf9d7d94

5、手动去处理,官方给予的案例

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;}

返回结果类似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7

相关文章:

  • 第十五章:面向对象程序设计
  • Mabatis中String类型传参常见问题和解决办法
  • 商务智能|描述性统计分析与数据可视化
  • 嵌入式硬件电路原理图之跟随电路
  • 创建x11vnc系统进程
  • Could not load library libcudnn_cnn_infer.so.8
  • Python新年烟花代码
  • 【Pytorch】学习记录分享10——TextCNN用于文本分类处理
  • Linux 修改主机名称并通过主机名称访问服务器
  • 小心JDK20 ZipOutputStream
  • 计算机网络(6):应用层
  • 桌面天气预报软件 Weather Widget free mac特点介绍
  • BRC20 技术分析
  • element-ui table height 属性导致界面卡死
  • Vue 3.4 发布
  • [PHP内核探索]PHP中的哈希表
  • 30天自制操作系统-2
  • angular组件开发
  • centos安装java运行环境jdk+tomcat
  • Create React App 使用
  • CSS 专业技巧
  • Elasticsearch 参考指南(升级前重新索引)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Map集合、散列表、红黑树介绍
  • redis学习笔记(三):列表、集合、有序集合
  • Sass Day-01
  • tab.js分享及浏览器兼容性问题汇总
  • 复习Javascript专题(四):js中的深浅拷贝
  • 高程读书笔记 第六章 面向对象程序设计
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 构建二叉树进行数值数组的去重及优化
  • 使用权重正则化较少模型过拟合
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我的zsh配置, 2019最新方案
  • 自制字幕遮挡器
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • # 安徽锐锋科技IDMS系统简介
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (1)bark-ml
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)计算机毕业设计高校学生选课系统
  • (一)基于IDEA的JAVA基础1
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转) 深度模型优化性能 调参
  • (转)C#调用WebService 基础
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .htaccess配置重写url引擎
  • .naturalWidth 和naturalHeight属性,
  • .net 7 上传文件踩坑
  • .NET Core WebAPI中封装Swagger配置
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net网站发布-允许更新此预编译站点