2013-10-14 47 views
0

我正在创建一个迷你拍卖网站(没什么商业/严肃的,只是修改PHP)。每个拍卖都会有发布它的用户上传自己的图片。访问招标网站拍卖图片 - 最佳方式?

我试图以一种可以尽可能地扩大规模的方式来创建这个功能。

我目前所面对的两个想法:

1)创建一个子目录,每拍卖和图像存储在它里面。

  • 负:很多子目录通过

访问(性能):/path/auction_id/image.png

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

  • 正:在同一个地方
  • 负:很多很多很多的文件在一个目录

是通过下列方式之一好过另一个还是有更好的方法来完成它?

谢谢

回答

0

数字1是您的最佳选择。如果有的话,应该没有太大的性能差异。如果有的话可能实际上会更快,就好像您在1个目录中有很多文件一样,但通过搜索它们也是一个性能问题。当他们被分成子目录时,他们很容易找到,易于清理,似乎是一个更好的方法来做到这一点!

您还可以添加一个子目录,以便发布该项目时,可以在x天后轻松地清理它们(cronjob或类似的东西)(保持磁盘使用率)。例如:

uploads/{date}/{item_id}/{attachment_name (id + extension)} 
0

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

相反,尝试大意如下的东西(假设auction_id是一个10位数字,左侧填充零):

第一级目录:ID 二级目录的前两位数字:接下来的两个数字 第三级目录:接下来的两个数字 第四级目录(最低层):接下来的两个 文件名:全ID

例如,ID 4739273912将如下所示: /图像/ 47 /39/27/39/4739273912.jpg

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

你可能要修改这个方法来处理更大编号的(尽管你与量很长一段时间进行设置,假设顺序分配) - 或者,甚至更好,不妨先从randomly-为您的拍卖ID分配生成GUID。