2011-04-05 128 views
2

我有一個PHP過程,用戶在瀏覽器中運行,但往往需要相當長的時間 - 5分鐘以上。我們只是切換到新的服務器,當我們嘗試運行腳本時,它始終在4分鐘時間內完全超時,發送到500內部服務器錯誤頁面並在錯誤日誌中輸出以下錯誤:如何避免CGI超時?

超時由CGI腳本 等待輸出腳本頭

過早結束: cgi_wrapper

有趣的是,PHP的過程似乎在後臺完成。如果我們離開500錯誤頁面並等待一段時間,則會從腳本中進行所需的更改。

有沒有什麼辦法可以解開這個似乎已經放在我們身上的CGI限制?我已閱讀了FastCGI,但不知道如何在我們的服務器上安裝(Apache,centOS,PHP 5.3)。

感謝您的幫助!

回答

1

可能是Web服務器超時等待腳本的響應。實際上,四分鐘後,服務器似乎非常耐心。 FastCGI連接的默認值是30秒。

它可能有助於在等待時向客戶端發送一些數據(和flush())。這告訴Web服務器和瀏覽器請求仍然存在。

例如,如果您的腳本在最後提供HTML頁面,您可能會不時發送<!-- please wait... ->。它對用戶不可見。

無論如何,任何需要10秒以上才能完成的腳本都是糟糕的設計。我建議在後臺單獨完成這項工作,並讓客戶端調查完成情況。請注意,無論您在服務器上做什麼,某些瀏覽器/代理服務器都可能會超時。