2012-08-14 76 views
1

這是理論問題。商店上傳的用戶圖片

Twitter的用戶保持個人資料圖片如下:

https://twimg0-a.akamaihd.net/profile_images/2044921128/finals_normal.png 

這是無法想象的,他們有一個包含2044921128個目錄(例如)的服務器。也許這個URL使用mod_rewrite創建?

那麼如何存儲非常大數量的用戶的圖像? 如何完成此方案:

  1. 用戶選擇和PHP腳本上傳應該是他的個人資料圖片的圖像。
  2. PHP腳本將其重命名,設置PATH存儲此圖片,移動它最後會將此路徑數據庫,用於進一步使用。

那麼如何路徑必須是什麼樣子?

回答

1

沒有說,Akamai的(根據您的網址存儲Twitter的圖片)實際存儲在目錄結構中的文件。它們完全可能存儲在內存中(由目錄結構支持),數據庫(SQL/NoSQL)或Akamai認爲有效的任何其他存儲機制。

可以路線與

https://yourService.com/profile_images/ 

開始您選擇的PHP腳本,然後解析URL的其餘部分以確定正在請求並存儲該圖像的URL的所有請求/從中檢索什麼您需要的存儲機制(可能是數據庫),基於解析的URL。

這裏是一個簡短的博客文章表示這樣做,使用mod_rewrite

http://www.phpaddiction.com/tags/axial/url-routing-with-php-part-one/

1

大多數OS-ES勸阻有超過1024根的目錄/文件單個目錄內的任何數量的上面慢慢地使的一種方法掃描和定位其中的特定資源較慢,所以我認爲可以安全地認爲akamai在profile_images內不會有2044921128個目錄!

它要麼是profile_images或與URL路由的許多方式中的一種內產生可用於定位資源的特殊唯一標識符編號。在任何情況下,我認爲它不會對應目錄的數量。

+0

Unix有'ext4'文件系統可以處理64000目錄,不是嗎? – treng 2012-08-14 18:04:09

+1

即使是這樣的話,它的方式waaaaaaaaaaay不到2044921128目錄,是不是? :-) 此外,請注意它是它支持的最大值**。換句話說,在許多目錄被創建和使用之前,優化的讀寫性能開始下降。 – raidenace 2012-08-14 18:06:55