0

我正在创建一个小型拍卖网站(没有商业/严肃,只是修改 PHP)。每次拍卖都会有自己的图片由发布它的用户上传。

我正在尝试以一种允许它尽可能扩大规模的方式来创建它。

目前我有两个想法:

1) 为每次拍卖创建一个子目录并在其中存储一张图片。

  • 负面:很多子目录(性能?)

通过以下方式访问:/path/auction_id/image.png

2) 创建一个目录和其中的所有拍卖图像,并通过它们的文件名访问它们。示例文件名:/path/auction_images/auction_id.png

  • 正面:集中在一处
  • 负面:在一个目录中有很多很多很多的文件

其中一种方法比另一种更好,还是有更好的方法来做到这一点?

谢谢

4

2 回答 2

0

Number 1 is your best option. There shouldn't be much performance difference at all, if any. If anything it might actually be quicker as if you have lots of files in 1 directory, searching though them is also a performance issue. When they are split up into sub directories, they are easy to find, easy to clean, just seems like a nicer way to do it!

You could also add a subdirectory for when the item was posted so you can clean them up very easily (cronjob or something similar) after x days (keep down disk usage). Something like:

uploads/{date}/{item_id}/{attachment_name (id + extension)}
于 2013-10-14T15:16:12.927 回答
0

不同的文件系统处理具有不同性能级别的大量条目的目录。但是,恕我直言,避免使用包含大量文件的单个目录是个好主意。您提出的两个解决方案实际上在这方面都存在相同的问题 - 第一个解决方案有一个包含很多子目录条目的单个目录,而第二个解决方案有一个包含很多文件条目的单个目录。

相反,请尝试以下几行(假设auction_id 是一个十位数字,左填充零):

一级目录:ID 的前两位 二级目录:后两位 三级目录:后两位 第四级目录(最低级):后两位 文件名:完整 ID

例如,ID 4739273912 如下:/images/47/39/27/39/4739273912.jpg

这将保证没有一个目录包含超过 100 个条目。

您可能希望修改此方法以处理更大的 ID #(尽管您会在很长一段时间内设置该数量,假设顺序分配) - 或者,更好的是,从为您的随机生成的 GUID 开始拍卖 ID 分配。

于 2013-10-14T15:20:37.890 回答