Home > Article > Backend Development > php生成标准唯一的uuid的方法
方法一:php内置函数uniqid()
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
uniqid(prefix,more_entropy)
prefix | 可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。 |
more_entropy | 可选。规定位于返回值末尾的更多的熵。 |
如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。
如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。
以字符串的形式返回唯一标识符。
注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。
<?phpecho uniqid();?>
输出类似:
4415297e3af8c
com_create_guid函数在生成全局唯一标识符,生成类似于:{ E787D62D-4B4D-492C-9301-6FFD53A1F2D7}这样的字符串,可用trim函数或者其它方法处理掉大括号,即:trim(com_create_guid(), '{}');
<?phpfunction GUID(){ if (function_exists('com_create_guid') === true) { return trim(com_create_guid(), '{}'); } return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));}?>
如php连接mysql时,可以用mysql_query("select uuid() as uid");得出唯一id,也可得出类似于:82685c7c-f2a6-1032-b525-fe3407868e36这样的唯一字符串
如使用微秒数或者时间戳加上随机数等组合生成唯一ID,类似于:md5(time() . mt_rand(1,1000000));