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

news/2024/7/24 7:18:26 标签: php

php.cn/faq/475420.html" rel="nofollow">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))

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

phpuniqid_18">3、php内置函数uniqid()

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

php">echo uniqid();
  echo uniqid();
  echo uniqid();
 OUTPUT:
    5a4b62dd4aeea
    5a4b62dd4aff7
    5a4b62dd4b069

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

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

php">echo md5(uniqid());
OUTPUT:
    0ac3d6e99b7f5290c93d730eaf9d7d94

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

php">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


http://www.niftyadmin.cn/n/5299567.html

相关文章

【轮式移动机器人课程笔记 4】机器人可操作度和车轮类型

L4 机器人可操作度和车轮类型 本讲主要包含三部分内容: (1)复习上节课程中运动学相关知识(2)讨论移动机器人可操作度(3)讨论移动机器人的车轮类型 4.1 回顾轮式移动机器人运动学知识 具体详见 …

AI智能软件研发管理工具集,进一步提升研发效能。

近日CoCode旗下CoCode开发云元旦全新升级发布!这标志着新一代软件研发管理AI智能工具集正式上线,CoCode在软件研发智能化进程中更进一步。 该工具集包含了一系列的AI智能工具,有助于软件研发管理过程智能化,从而提高研发效率&…

设置随机种子以确保结果的可复现性(pytorch、numpy、random、os)

在机器学习和深度学习任务中,随机性是一个常见的因素。在某些情况下,我们希望能够获得可复现的结果,以便于调试、复现实验结果或确保结果的一致性。为了实现这一目标,设置随机种子是一种常用的方法。 在本篇博客中,将…

解决Gradle打War包时不能把所依赖的jar包打进来的问题,Springboot项目的Gradle构建问题

启动War包报错: Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication at java.net.URLClassLoader.findClass(URLClassLoader.java:387) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.m…

elasticsearch-curator: es索引生命周期(关闭、删除索引)

1,下载安装 rpm包下载安装 # 防止安装rpm包报错:error: [upel]: elasticsearch-curator NOKEY ; # error: [upel]: elasticsearch-curator signature check fail rpm --import https://artifacts.elastic.co/GPG-KEY-ela…

网络安全—PKI公钥基础设施

文章目录 前提知识散列函数非对称加密数字签名 PKI受信任的人RA注册CA颁发IKE数字签名认证(交换证书)密钥管理 前提知识 散列函数 散列也可以叫哈希函数,MD5、SHA-1、SHA-2、、(不管叫啥,都记得是同一个东西就行&…

分布式系统架构设计之分布式数据存储的扩展方式、主从复制以及分布式一致性

三、水平扩展和垂直扩展 在分布式系统中,数据存储的扩展是为了适应业务的增长和提高系统的性能。分为水平扩展和垂直扩展两种方式,这两种方式在架构设计和应用场景上有着不同的优势和局限性。 水平扩展 水平扩展是通过增加节点或服务器的数量来扩大整…

【基础八股文】html css js

1、css盒模型 在html页面中说有元素都可以看成一个盒子, 组成:盒子的组成内容content,内边距padding,边框border,外边距margin, 类型:标准盒模型:marginborderpaddingcontent IE盒…