Apache-2.2
使用 PHP 防止 Apache 中的 CGI 超時
我有一個使用者在瀏覽器中執行的 PHP 程序,但往往需要相當長的時間 - 超過 5 分鐘。我們剛剛切換到一個新伺服器,當我們現在嘗試執行腳本時,它始終在 4 分鐘準確超時,發送到 500 Internal Server Error 頁面並在錯誤日誌中輸出以下錯誤:
等待 CGI 腳本輸出的超時
腳本頭過早結束:cgi_wrapper
有趣的是,PHP 程序似乎確實在後台完成。如果我們離開 500 錯誤頁面並稍等片刻,就會對腳本進行所需的更改。
有什麼辦法可以解除這個似乎已經施加在我們身上的 CGI 限制?我已經閱讀了有關 FastCGI 的資訊,但不確定如何在我們的伺服器(Apache、centOS、PHP 5.3)上安裝它。
這不是解決問題的方法——HTTP 不打算處理需要很長時間的操作——雖然聽起來你目前的 PHP 配置允許程序執行很長時間,這意味著你配置錯誤——它應該知道網路伺服器何時斷開連接並做出適當的響應。可能會偽造網路伺服器配置,甚至可以讓瀏覽器保持連接足夠長的時間,也許您不必擔心中間的代理 - 但您使用每個工具的方式都是不是為使用而設計的。
解決問題的正確方法是從網頁啟動它,但執行是一個單獨的程序組,並將程式碼添加到長時間執行的程序中以將狀態寫入某處,然後可以由瀏覽器觸發的腳本輪詢該狀態。