php 生成唯一id的几种解决方法

简介: php 生成唯一id的几种解决方法   网上查了下,有很多的方法 1、md5(time() . mt_rand(1,1000000));   这种方法有一定的概率会出现重复 2、php内置函数uniqid()   uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.   w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。

php 生成唯一id的几种解决方法

 

网上查了下,有很多的方法

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

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

2、php内置函数uniqid()

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

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

  下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872

1
2
3
4
5
6
7
8
9
10
11
12
13
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}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 ;
   }
 
 
标签:  phpuuid主键
目录
相关文章
|
7月前
|
SQL 安全 程序员
PHP编程中的关键性错误及解决方法
在PHP编程过程中,程序员常常会遇到一些关键性错误,这些错误可能会导致程序运行异常甚至崩溃。本文将重点探讨PHP编程中常见的关键性错误,并提供解决方法,帮助程序员更好地应对这些问题,提高编程效率和代码质量。
40 1
没有可用的软件包 php5-mysql,但是它被其它的软件包引用了。解决方法
没有可用的软件包 php5-mysql,但是它被其它的软件包引用了。解决方法
232 0
|
4月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
|
6月前
|
应用服务中间件 Linux 网络安全
PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
在Azure App Service for Linux上部署的PHP应用遇到上传文件超过1MB时出现413 Request Entity Too Large错误的解决之法
225 0
|
7月前
|
JSON PHP 数据格式
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
|
PHP Windows
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
190 0
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
|
存储 监控 算法
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
245 0
|
SQL 安全
dedecms cookies泄漏导致SQL漏洞 article_add.php 的解决方法
漏洞名称:dedecms cookies泄漏导致SQL漏洞 补丁文件:/member/article_add.php 补丁来源:云盾自研 漏洞描述:dedecms的文章发表表单中泄漏了用于防御CSRF的核心cookie,同时在其他核心支付系统也使用了同样的cookie进行验证,黑客可利用泄漏的cookie通过后台验证,进行后台注入。
103 0
|
安全 PHP 数据库
php环境无法上传文件的解决方法
php环境无法上传文件的解决方法
228 0