PHP生成唯一ID的几种解决方案

网上有很多方法可以上网。

1,MD5(时间())。mt_rand(11000000));

这种方法有一定的重复概率。

2、PHP内置函数uniqid()

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

在w3school参考手册有一句话:因为系统时间,通过这个函数生成的ID是不是最好的。如果你需要生成一个独一无二的ID,使用MD5()函数。

以下方法返回一个类似的结果:5ddb650f-4389-f4a9-a100-501ef1348872

复制代码代码如下所示:
功能的UUID(){
如果(function_exists('com_create_guid ')){
返回com_create_guid();
{人}
mt_srand((双)瞬时()×10000); / / PHP 4.2.0可选的了。随机数的播种,不需要后来4.2.0。
charid美元= strtoupper(MD5(uniqid(RAND),(真的))); / /根据当前时间(微秒计)来生成一个唯一的ID.
$字符= CHR(45); / /
$ UUID =。 / / CHR(123){ / /
substr(charid美元,0, 8)。$字符。substr(charid美元,8, 4)。$字符。substr(charid美元,12, 4)。$字符。substr(charid美元,16, 4)。substr。
/ /。chr(125); / / }
返回的UUID;
}
}

com_create_guid()是PHP产生唯一的ID的方法,它似乎已经在PHP5。
三.官方uniqid()参考手册,有一个用户提供的方法,和结果是相似的:{ e2dfffb3-571e-6cfc-4b5c-9fedaaf2efd7 }

复制代码代码如下所示:
公共功能create_guid($命名空间=){
静态$=;
$ uid = uniqid(
元=命名空间;
数据_server美元美元'request_time'} {;
数据_server美元美元'http_user_agent'} {;
数据_server美元美元'local_addr'} {;
数据_server美元美元'local_port'} {;
数据_server美元美元'remote_addr'} {;
数据_server美元美元'remote_port'} {;
strtoupper散列(hash =美元(美元'ripemd128,UID。$ GUID。MD5($))
$ ={。
substr($散列,0, 8)。
-。
substr($散列,8, 4)。
-。
substr($散列,12, 4)。
-。
substr($散列,16, 4)。
-。
substr($散列,20, 12)。
};
返回$ GUID;
}