2014年3月更新:
首先,必须注意这
uniqid是一个误称,因为它不能保证唯一的ID。
根据PHP文档:
警告!
此函数不会创建随机或不可预测的字符串。不得出于安全目的使用此功能。使用加密安全的随机函数/生成器和加密安全的哈希函数来创建不可预测的安全ID。
和
此函数不会生成加密安全的令牌,实际上,如果未传递任何其他参数,则返回值与microtime()几乎没有什么不同。如果您需要生成加密安全的令牌,请使用openssl_random_pseudo_bytes()。
根据文档,将更多熵设置为true会生成更多唯一值,但是执行时间更长(尽管程度很小):
如果设置为TRUE,则uniqid()将在返回值的末尾添加附加熵(使用组合线性同余生成器),这将增加结果唯一的可能性。
请注意这行
increases the likelihood that the result will be unique,并非那会 保证 唯一性。
您可以“无限地”争取唯一性,并使用任意数量的加密例程,添加盐等来增强它-
这取决于目的。
我建议您查看有关主要PHP主题的评论,尤其是:
http://www.php.net/manual/zh/function.uniqid.php#96898
http://www.php.net/manual/zh/function.uniqid.php#96549
http://www.php.net/manual/zh/function.uniqid.php#95001
我的建议是弄清楚 为什么 需要唯一性,这是出于安全性(即添加到加密/加扰例程)吗?另外,它需要 有多
独特?最后,看一下速度注意事项。适应性将随着基本注意事项而变化。



