2011-12-08 71 views
0

我目前正在嘗試開發一個PHP應用程序,其中我的服務器下載一個文件,用戶幾乎可以同時做同樣的事情。我已經考慮過這個問題:「如果用戶比服務器快速下載......」,但目前這不是問題。 爲此,我使用php的頭文件和readfile函數。這裏是我的代碼:PHP標題和下載

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="'.$data['name'].'";'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.$data['size']); 
readfile($remoteFile); 

我必須使用Content-Length頭設置,當用戶點擊鏈接所下載的文件,而不是大小合適的尺寸。但是,幾秒或幾分鐘後,下載停止,我需要重新啓動... 如果您考慮解決方案,即使它不使用header();功能,請告訴我。

預先感謝您...

+0

什麼是文件的大小?你是在本地主機還是真正的服務器機器上? –

+1

您的腳本可能超時在您的服務器上(或者您的託管公司被踢掉)。 – nickb

+0

我可以擁有一些大文件(> 500 Mb),並且它位於真正的專用服務器上。我嘗試在php.ini上將max_php_execution_time設置爲0,但它也不起作用... –

回答

0

我都經歷過,這是直接關係到最大運行時間設置,如果你對safe_mode設置運行懇求你執行。

如果您有選擇,請嘗試設置set_time_limit(0)並查看是否可以使用它。

如果您有自己的服務器,則應該查看mod_xsendfile模塊的apache,因爲該模塊專門爲將大文件發送給用戶而構建。

哦,它的愚蠢使用方便

header("X-Sendfile: $path_to_somefile"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$somefile\""); 
exit; 
+0

感謝您的回答,但它不起作用...它下載空文件(0字節),即使我在標題中設置了「內容長度」,很奇怪...... –