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主键
目录
相关文章
|
4月前
|
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数据进行修改删除操作
|
10月前
|
存储 监控 算法
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
php开发实战分析(9):使用实现短地址的分享的解决方案(第三方短链接服务、数据库自增ID转换、自定义短地址生成算法、自增数字短码)
187 0
|
12月前
|
安全 PHP 数据库
php环境无法上传文件的解决方法
php环境无法上传文件的解决方法
142 0
PHP实现截取中文字符串不出现?号的解决方法
PHP实现截取中文字符串不出现?号的解决方法
|
存储 算法 PHP
唯一ID生成原理与PHP实现-雪花算法
唯一ID生成原理与PHP实现-雪花算法
548 0
唯一ID生成原理与PHP实现-雪花算法
|
SQL PHP 数据库
php一次性大量数据入库解决方法
php一次性大量数据入库解决方法
69 0
|
PHP
验证php session id 是否有效,验证默认的PHP会话ID值
验证php session id 是否有效,验证默认的PHP会话ID值
126 0
PHP:使用ramsey/uuid生成唯一id
PHP:使用ramsey/uuid生成唯一id
157 0
|
PHP 索引
PHP重组数据,让数据的id跟索引相等
PHP重组数据,让数据的id跟索引相等
58 0
PHP重组数据,让数据的id跟索引相等