2012-09-12 335 views
0

我有一個網頁,列出了數千個圖像文件的鏈接。目前,這種處理的方式是使用一個非常大的HTML文件,該文件用圖像的名稱進行手動編輯並鏈接到圖像文件。圖像管理不好,所以經常會有很多鏈接被破壞或名稱錯誤。亞馬遜S3上的file_exists

這裏是在HTML文件中的上千行的一行的例子:

<h4>XL Green Shirt<h4> 
<h5>SKU 158f15 </h5> 
    [<a href="http://website.com/images/products/TIFF/158f15.tif" target="_blank">TIFF</a>] 
    [<a href="http://website.com/images/products/158f15.jpg" target="_blank">JPEG</a>] 
    [<a href="http://website.com/images/products/PNG/158f15.png" target="_blank">PNG</a>] 
    <br /> 

我有一個數據庫中的圖像中的產品信息,所以我的解決辦法是用PHP編寫的網頁遍歷數據庫中的每個產品編號,並查看是否存在具有相同編號的文件,然後顯示相應的鏈接和信息。

我使用PHP函數file_exists()完成此操作,因爲產品ID與文件名相同,並且在我的本地計算機上運行良好。問題是所有的圖像託管在AmazonS3上,所以對S3運行這個函數幾千次總是會導致請求超時。我已經嘗試了類似的PHP函數,以及ping URL和測試200或404響應,所有的時間。

是否有解決方案可以檢查遠程URL上文件的存在並消耗少量資源?還是有更新穎的方式可以解決這個問題?

+0

它是你自己的S3帳戶嗎?如果是這樣,肯定有API調用可以用來發現這些信息。 – Charles

+0

我想你應該存儲在你的數據庫中,如果圖像已經上傳爲這個產品,如果可能 – abresas

+0

這是我自己的帳戶,但我是S3的新手,所以如果有我不知道他們。 – nick

回答

1

我認爲你應該更好地確保在將記錄放入數據庫時​​強制執行文件的存在,而不是試圖檢查每個頁面負載上是否存在數千個文件。

也就是說,替代解決方案可能會使用s3fs和本地存儲緩存目錄,在其中檢查文件的存在。這比直接檢查S3存儲要快得多。 s3fs也將提供一種方便的方式將新文件寫入S3存儲。