【发布时间】:2009-10-15 14:04:09
【问题描述】:
如果我将每个上传文件的文件名设为 PHP 的 microtime(),碰撞的风险是否现实?有没有办法进一步随机化文件名?
我预计大约一周内会有大约 20,000 次上传。那是 2800/天或 119/小时(假设分布均匀)。有没有人有任何假设微时间是独一无二的经验?
谢谢!
【问题讨论】:
标签: php file-upload unique
如果我将每个上传文件的文件名设为 PHP 的 microtime(),碰撞的风险是否现实?有没有办法进一步随机化文件名?
我预计大约一周内会有大约 20,000 次上传。那是 2800/天或 119/小时(假设分布均匀)。有没有人有任何假设微时间是独一无二的经验?
谢谢!
【问题讨论】:
标签: php file-upload unique
在您的情况下生成随机文件名的最佳方法是使用GUIDs。它们很棒,因为即使对于多个服务器,该算法也能保证值的唯一性。如果您使用的是 Windows,com_create_guid 功能适合您。
您也可以查看适用于所有 PHP 平台的uniqid 函数。
【讨论】:
一种常用的方法是创建格式为 YYYY/MM/DD/id.jpg 的目录。这样您也不会遇到文件系统限制。
【讨论】:
我认为这不是一个大问题。 (有点偏执)
检查是否存在,如果存在,解决冲突(可能在一个while循环中,直到保证其唯一性)。
我无法想象每微秒有这么多文件。
【讨论】: