2011-04-18 56 views
2

我有一臺運行PHP網站的Apache服務器。Apache - 上傳文件凍結了我的網站

當我通過網站上傳文件或從我的服務器下載文件時,整個網站無法在下載完成時迴應任何其他查詢。

它看起來像我的Apache只有1個線程,並且我的下載沒有完成時不能提供任何其他查詢。

我的服務器有Debian,在帶1Go RAM的Pentium4 3Ghz CPU上。

問題

我怎樣才能解決這個問題,所以我可以同時提供查詢服務的Apache上載或下載文件到另一個客戶端?

+1

有沒有問題...... – Mischa 2011-04-18 15:31:21

+1

你一定在做一些奇怪的事情,你的網站是否凍結?或者你的瀏覽器凍結?運行此測試:打開Firefox>開始下載/上傳,當發生這種情況時,請打開Chrome/IE訪問您的網站。如果它打開,有一個很好的可能性,它不是APACHE – Stewie 2011-04-18 15:33:59

+0

該網站沒有迴應。瀏覽器是好的。 Apache是​​問題。 – 2011-04-18 15:34:39

回答

1

你有沒有嘗試直接訪問一個圖像或服務器上的一些非PHP資源?我懷疑Apache會凍結文件上傳,但PHP腳本可能會凍結。

如果您已將PHP配置爲自動啓動會話,那麼默認的基於文件的會話處理程序會在會話文件的整個生命週期內鎖定會話文件,這意味着您的上載將鎖定所有其他PHP腳本上傳。

因此,請嘗試直接點擊圖像或某些文本等...不是PHP的東西,看看服務器是否響應。如果是這樣,那麼這是你的PHP配置,會話處理程序是最有可能的罪魁禍首。

+0

我想你明白了。事實上,只有基於PHP的上傳纔會凍結我的會話。然後,所有使用session_start()的PHP腳本都不響應。我能做些什麼來防止這個問題? – 2011-04-18 16:00:03

+3

禁用上傳腳本的自動啓動會話。您應該可以通過' php_value session.auto_start = 0'或Apache中的任何內容來完成。在長時間運行的PHP中,在長時間運行的部分之前放置一個'session_write_close()'。您仍然可以訪問會話數據,但不會寫出任何更改。如果需要,可以隨後再次執行session_start()。 – 2011-04-18 16:06:12

+0

非常感謝Marc,你救了我的一天。 – 2011-04-18 16:08:47