2015-05-22 49 views
4

我正在創建一個僅工作10次的下載鏈接。所以我有2個選項。如何創建一個(可配置)數量的臨時下載鏈接

  • 下載文件和更新其計數數據庫和刪除文件 時數爲10
  • 或下載文件和重命名爲filename-1, 文件名,2名....... -10 ..並且最後在它到達 filename-10時刪除它。

我想第二個選項使用較少的資源,不是要求database.Now什麼是查找文件name.For例如最簡單的方法:

我所有的文件名都是獨一無二的一樣sadkjsah78876djhgsadj.jpg。所以當我更新計數就會像

sadkjsah78876djhgsadj-1.jpg 
(or) 
sadkjsah78876djhgsadj-8.jpg 

因此,如何根據在循環的directory.I正在考慮sadkjsah78876djhgsadj要查找的文件名。但我不認爲那是最好的方法,當我設置下載限制到100 。

+3

我會明確地去與數據庫選項。在如此多的層面上更好。 –

+0

,但會有數百萬的下載文件將被生成......並且我還必須創建cron作業來刪除這些列表。 – Vishnu

+0

更新數百萬行數據庫比動態重命名數百萬個文件要好得多。這就是數據庫的用途。如果你正確設置它,不會有負載問題。 –

回答

1

最佳選擇是使用.htaccessmod_rewite將對某個目錄的調用重寫爲PHP文件。例如到/downloads/FILEHASH.jpg任何調用就會改寫爲/download.php?file=FILEHASH

然後download.php將檢查FILEHASH在DB相匹配的行和該DL計數x下,如果是的話,它會遞增DL計數,設定的響應代碼200,內容類型爲image/jpeg併發出圖像數據(或者存儲在文件系統中或者從數據庫中的BLOB中)。

如果沒有找到,或者如果在DL計數結束x,它會設置響應代碼爲404(或東西,如果你喜歡更合適),要麼返回任何結果或者一個有用的消息。根據文件的大小,您應該也可以從數據庫中刪除該行,並在此時將文件與文件系統斷開連接。

如果您使用MVC框架,這種事情非常簡單。

如果您的服務不僅僅是圖片,請確保在添加時獲取上傳的MIME類型,將其保存在數據庫中,並在下載時作爲內容類型提供。

相關問題