2013-02-22 91 views
0

我寫了一個小型下載門戶,我使用application/octet-stream來下載文件。應用程序/八位字節流塊瀏覽器

function fu($filename) 
{ 
    header("Content-Type: application/octet-stream"); 
    $save_as_name = basename($filename); 
    header("Content-Disposition: attachment; filename=\"$save_as_name\""); 
    readfile($filename); 
} 

當我下載一個大文件時,無法瀏覽目錄樹,直到下載完成。

有沒有機會同時做到這一點?

+1

你在哪裏瀏覽目錄樹,在服務器上還是在客戶端上? – 2013-02-22 15:34:20

+0

它是一個使用readdir()查看目錄樹的獨立PHP網站。 – emmi 2013-02-22 16:03:47

+1

你在使用會話嗎? – 2013-02-22 16:05:10

回答

0

您可能正在使用會話。雖然您正在忙於提供下載的窗口A中打開會話,但窗口B將無法獲得任何頁面,因爲服務A的PHP進程仍會將會話數據打開/鎖定,並且B正在等待該鎖釋放。

簡單的解決方法是在致電readfile()之前的某個時間致電session_write_close()。這會將會話提交到服務器上的磁盤上,關閉它並釋放鎖定,以便其他PHP進程可以將其恢復。

+0

嗨Sammitch,謝謝你的回答。我會在週末測試session_wrote_close()並給你一個反饋。 – emmi 2013-02-22 16:15:14

相關問題