2013-10-14 42 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。