我试图产生一个独特的ID in php为了存储用户上载内容FS没有冲突。我使用的php,而在目前这个小片段是负责生成UID:

$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);

这个代码是可怕的:它创建了一个临时文件上FS,并删除它,仅保留有关的唯一的部分产生串。

是否有更好的方式来做到这一点,最好没有任何外部的依赖?

谢谢!

有帮助吗?

解决方案

string uniqid ([ string $prefix [, bool $more_entropy ]] )

根据当前时间(以微秒为单位)获取带前缀的唯一标识符。

USAGE: $id = uniqid(rand(), true);

其他提示

由于uniqid()和rand()都是基于当前时间的函数,因此rand()几乎不添加熵,因为时间在相应的调用之间只会改变很小的数量。

只要您使用 more_entropy 选项,就不应该在单个服务器中发生冲突。如果使用群集,请确保在服务器之间包含不同的前缀。

uniqid()是你在找什么在大多数实际情况。

你可以把它甚至更多"uniq"通过加入一个大的随机数目之后。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top