2013-07-09 70 views
0

我運行一個網站,銷售醫生的音頻下載。目前,當客戶購買播客時,他/她會顯示一個直接的HTML鏈接來開始下載。鏈接指向一個ZIP文件,大小可以是1Gb。我問的一個問題是,爲什麼當Apache服務器的暫停時間可能只有幾分鐘時,下載操作可能會持續幾個小時?我認爲這個超時是服務器處理GET請求並通過輸出緩衝區將結果輸出發送到瀏覽器。也許緩衝區沒有超時傳輸給用戶。我對麼?Apache和PHP下載超時

我的第二個問題是關於PHP超時。我不喜歡直接鏈接下載的HTML,就好像這個URL已經被其他用戶知道了,他們可以免費下載。一個解決方案可以是使用PHP腳本通過發送適當的頭文件來傳輸下載文件,然後,例如,預先載入下載數據的變量的「回聲」。我的問題是php.ini文件中的超時是否會影響下載。腳本通常需要30秒才能完成。那麼,腳本是否在下載過程中運行?或者,腳本可以快速完成並將下載數據放入PHP輸出緩衝區。如果是後者,是否有緩衝區清空的超時時間?

我想我必須在php.ini(默認爲128Mb)中爲'memory_limit'設置一個大的值,以允許1Gb下載的大小。

回答

0

嘗試設置更大的流超時PHP STREAM TIMEOUT。你可以使用phpinfo來查看默認值是什麼。

+0

感謝您的幫助。我現在正在閱讀關於PHP Streams的所有信息! – mikeeverard