2014-09-26 143 views
0

我正在運行IIS 8.0,並且有人在點擊下載鏈接時提供各種下載服務的腳本。然而,我遇到了一個問題,只要用戶下載的東西完全沒有響應,直到下載完成。以下是下載腳本的代碼。該腳本正在新窗口中打開。下載由PHP腳本提供的文件時,網站變得不可用

$extension = fileexten($filename); 
if(($filename!= false)&&($fakename!=false&& @fopen($filename,'r')==true)){ 
    $mime = contenttype($extension); 
    set_time_limit(0); 
    header('Pragma: public'); 
    header('Expires: 0'); 
    header("Content-Type:".$mime); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Cache-Control: private', false);   
    header('Content-Disposition: attachment;filename='.$fakename.'.'.$extension); 
    header("Content-Transfer-Encoding: binary"); 

    if (ob_get_length() > 0) { 
    ob_end_clean(); 
    } 
    flush(); 
    readfile($filename); 
} 
else{ 
    $error = "<h3>We could not find this file</h3>";} // If the filename or fake filename could not be retrieved. 
} 
+0

文件有多大?你每次都將文件讀入內存嗎? – 2014-09-26 17:52:38

回答

4

在輸出文件之前關閉會話。

session_write_close(); 
readfile($filename); 

會話只能由一個PHP程序在同一時間打開,並在等待訪問會話數據文件發出session_start()命令的任何其他請求將被阻塞。