这可能是一个偏离主题的问题,但我希望有人可以回答这个问题.
具有更多熵的uniqid()以多少纳秒,毫秒或秒为单位运行创建重复的风险?
参考下面的链接,如果在一个毫秒内创建两个id,uniqid将发生冲突.熵越多,怎么办?
(我的目标是在创建时使用一个小的可索引字母数字字符串作为文档ID,可以使用最小的处理器功率快速创建,而不会产生数据库干扰.)
这里的答案似乎没有提供任何确切的数字: uniqid有多独特?
从源代码中more_entropy添加九个随机十进制数字,因此在37,000次左右的调用后可能会发生冲突.(对于10亿转为37,000,请参阅生日攻击.)当然,这忽略了这些数字实际上并非随机但由LCG生成的事实,并且相同的LCG可能在代码中的其他位置使用,因此碰撞的实际机会可能更高(确切地说,多少,我不知道).
另外值得注意的是,uniqid实际上并不能保证微秒的分辨率,因为某些PHP实现(特别是Windows)无法访问微秒精度时钟.
简而言之,如果您需要一个安全敏感的任何唯一ID,或者碰撞成本很高,请避免uniqid.否则,使用它more_entropy可能很好(虽然常见的模式是uniqid(mt_rand(), true)用来添加更多的额外熵).