2010-08-25 90 views
0

我有一個基於Web的應用程序,該服務器的內容通過與soap服務器交互來驗證用戶身份。肥皂服務器具有用戶需要能夠下載的文件。php apache和臨時文件

向用戶提供這些文件的最佳方式是什麼?當用戶請求一個文件時,我的服務器會對肥皂服務器進行soap調用來提取文件,然後通過引用鏈接將其提供給用戶。

問題是這些臨時文件需要在某些時候清理乾淨,我首先想到的是這是一個基於Linux的系統,將它們存儲在/ tmp /並讓系統負責清理。

Is it possible to store these files in /tmp and have apache serve them 
to the user? 

如果Apache無法訪問/ tmp目錄,因爲它是Web根目錄之外,可能我可以創建網站根目錄下的符號鏈接到/ tmp /文件名? (這需要清除符號鏈接,但在某些時候。)

建議/意見讚賞最佳方式來管理這些臨時文件?

I am aware that I could write a script and have it executed as a cron job on 
regular intervals but was wondering if there was a way similar to presented 
above to do this and not have to handle deleting the files? 

回答

2

Apache很有可能讀取tmp目錄,但是這種方法聞起來很糟糕。我的方法是讓PHP讀取文件並將其發送給用戶。基本上,您發送適當的HTTP標頭以指示您要發送的內容的類型以及該文件的名稱,然後您只需使用echo(例如)將文件吐出。

它看起來像有這樣的一個問題一個很好的討論:

HTTP Headers for File Downloads

這種方式的另外一個好處是,它讓你在完全控制,因爲有一個用戶和文件之間PHP。這意味着您可以添加額外的安全措施(例如,時間控制),從各個地方提取文件以分發帶寬使用等等。

[附加材料]

對不起,不直接解決您的問題。如果您使用PHP來提供文件,那麼它們不需要駐留在Apache Web根目錄中,只需Apache/PHP具有對它們的文件系統讀取權限即可。因此,您確實可以將它們存儲在/ tmp中,並讓操作系統爲您清理它們。但是,您可能需要調整這些清理的頻率,以使音量保持在您想要的水平。

如果您想要確保在一段時間或一定次數的下載後可靠地拒絕訪問,可以將跟蹤信息存儲在數據庫中(例如,用戶標記以表明他們已經下載了文件),然後用您的下載腳本檢查它,並可能拒絕下載。這有效地將訪問的安全性與清理頻率分開,您可能需要獨立調整兩件事。

希望這是更有幫助....

+0

是你的第一個幾句話正是我過得怎麼樣,但這個並沒有解決如何「清理」這些文件,因爲我們不希望填補服務器與我們可以通過肥皂檢索附件。 – Chris 2010-08-25 16:28:11

+0

感謝您的鏈接,但很好的信息。 – Chris 2010-08-25 16:30:29