应用场景生成唯一的ID是很常见的,如临时缓存
文件名,临时变量,临时安全代码,等uniqid()
函数生成一个基于微秒电流时间唯一的ID,ID的唯一性是非常可靠,因为唯一的ID生成与微秒的时间
关联。
只有id生成的
默认字符串返回13个字符串长度,如果不只是前缀ID的定义,返回最多23个字符,如果与MD5(id)函数相结合,只生成生成的id ID的概率最大,在实现
排序方面的随机性最大,特别是一些需要存储在数据库中的值。
首先,函数原型
字符串(字符串的前缀uniqid { {,布尔more_entropy } })
可以定义唯一ID的前缀和长度。
二、版本
兼容性 PHP 3,PHP 4,PHP 5
三、
功能基用法和示例
1,生成唯一ID
< PHP
uniqid(回声);
>
2,结合MD5()函数生成唯一ID
< PHP
回声MD5(uniqid());
>
输出:dfbc5c8c6438de075da28b3c8a413fd0
3,生成多个唯一id,因为它是微秒级的。
< PHP
uniqid(回声);
uniqid(回声);
uniqid(回声);
>
输出:
4bfd0e375396b
4bfd0e3753981
4bfd0e3753983
从产生的结果,唯一的ID排序。
使用的uniqid()函数来生成一个唯一的ID可以用于生成临时身份证和永久的唯一ID(存储库)。
ps的几种
解决方案: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 ($hash, 16, 4).
-。
substr($散列,20, 12)。
};
返回$ GUID;
}