我正在创建一个迷你拍卖网站(没有商业/严肃,只是修改PHP)。每次拍卖都会有自己的图片由发布它的用户上传。
我试图以一种允许它尽可能扩大规模的方式创建它。
目前我有两个想法:
1)为每次拍卖创建一个子目录,并在其中存储图像。
通过以下方式访问:/path/auction_id/image.png
2)在其中创建单个目录及所有拍卖图像,并通过其文件名访问它们。示例文件名:/path/auction_images/auction_id.png
其中一种方式比另一方更好还是有更好的方法完全实现它?
由于
答案 0 :(得分:0)
1号是你最好的选择。如果有的话,应该没有太大的性能差异。如果它可能实际上更快,好像你在1个目录中有很多文件,搜索它们也是一个性能问题。当它们被分成子目录时,它们很容易找到,易于清理,只是看起来更好的方式!
您还可以在项目发布时添加子目录,这样您可以在x天后轻松清理它们(cronjob或类似的东西)(保持磁盘使用率)。类似的东西:
uploads/{date}/{item_id}/{attachment_name (id + extension)}
答案 1 :(得分:0)
不同的文件系统处理具有不同性能级别的大量条目的目录。但是,恕我直言,避免使用包含大量文件的单个目录是个好主意。在这方面,你提出的两个解决方案实际上都有同样的问题 - 第一个解决方案有一个包含大量子目录条目的目录,而第二个解决方案有一个包含大量文件条目的目录。
相反,请尝试以下几行(假设auction_id为十位数字,左边用零填充):
第一级目录:ID的前两位数字 二级目录:下两位数 第三级目录:接下来的两位数 第四级目录(最低级别):下两个 文件名:完整ID
例如,ID 4739273912如下: /images/47/39/27/39/4739273912.jpg
这可以保证没有一个目录包含超过100个条目。
你可能想要修改这种方法来处理更大的ID#(虽然假设顺序分配你会长时间设置这个数量) - 或者更好的是,从随机生成开始拍卖ID分配的GUID。