在PHP中生成唯一ID

时间:2008-10-08 02:43:00

标签: php guid unique uuid identifier

我正在尝试在php中生成一个唯一的ID,以便将用户上传的内容存储在FS上而不会发生冲突。我正在使用php,目前这个小片段负责生成UID:

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

这段代码很可怕:它在FS上创建一个临时文件并删除它,只保留生成的字符串的相关唯一部分。

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

非常感谢!

3 个答案:

答案 0 :(得分:18)

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

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

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

答案 1 :(得分:9)

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

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

答案 2 :(得分:5)

uniqid()就是你在大多数实际情况中所寻找的。

你可以通过在它之后添加一个大的随机数来使它更加“uniq”。