使用php为文件指定唯一名称的最佳方法

时间:2014-01-18 01:12:33

标签: php

我想知道,没有使用任何类型的用户信息(id,昵称,年龄等),在大型数据库中使用php 确保文件名唯一性的最佳方法是什么很多用户之间流量很大,很可能同时?我使用的是$file = time(),但我想知道,只要两个用户可以同时检查此代码(大型大型,10000个用户),这是否足够同时和相同的功能同时运行200次。

8 个答案:

答案 0 :(得分:1)

时间不够独特,所有冲突都是在同一秒内跑了两次。

这是tempnamtmpfile的含义。

尽管名称如此,但您可以使用tempnam在系统临时目录之外创建文件,因此它们将是永久性的。

使用tmpfile创建的文件是临时文件,最迟在程序结束时删除。

答案 1 :(得分:1)

该文件是暂时的吗?那么也许tempnam。或者看看uniqid

答案 2 :(得分:0)

根据关联的数据库记录所具有的ID命名文件。您的数据库自动保证此ID的唯一性。没有必要重新发明轮子。

答案 3 :(得分:0)

除了使用db row insert id

之外,还可以使用当前时间戳(可能会附加microtime)到您的文件名

答案 4 :(得分:0)

超越仅命名文件的上下文,我使用以下调用为电子邮件确认哈希等生成随机字符串,但也可以在您的情况下使用。

$random = bin2hex(mcrypt_create_iv(4, MCRYPT_DEV_URANDOM));

答案 5 :(得分:0)

以下是我通常用于随机字符串的内容,然后您可以根据需要将文件类型附加到其末尾

sha1(uniqid(mt_rand(), TRUE));

答案 6 :(得分:-1)

microtime()怎么样?对于类固醇来说就像 time()

http://www.php.net/manual/en/function.microtime.php

答案 7 :(得分:-1)

同时使用时间戳和IP地址。