存储大量用户上传文件的建议做法?

时间:2012-11-25 14:08:28

标签: php storage

我正在寻找一种可扩展的方式来存储来自用户的大量文件。我的策略是用随机名称保存它们,并在数据库中保存名称和文件关系。

我的问题是将文件存储在磁盘上的建议做法是什么?我遇到的一个限制是,如果我将它们全部保存在一个目录中,则操作系统性能会降低,这是一个不,不。

显然我可以在指定的间隔创建目录并分割负载,但这只是一个黑客攻击,我确信必须有一个经过验证的真正的程序来处理存储。我似乎无法找到它们:)

我希望私下托管这些文件,而不是像S3这样的外部存储器。

1 个答案:

答案 0 :(得分:3)

由于您已经为每个文件提供了随机名称,请将其删除到子目录中。

假设有一个随机名称:

$randomName = 'Akj823daosd03hdx';

将其保存到:

/Ak/j8/23/daosd03hdx

这将限制每个目录中的节点数。如果你有一个很好的随机分布,这应该是平均分配的。

根据您拥有的文件数量,您也可以以不同的方式分发这些文件,但随机名称通常以这种方式直接分发。根据您的需要,您可以根据子目录和最终文件名的长度和数量而变化。