2010-10-13 78 views
2

我有一個功能,即獲得一個大的XML文件,然後分析它,然後使用細節,獲得一些更多的XML文件中,再次解析(A網店)。避免CGI超時

的問題是,該處理時間約15-20mins,但在此之前,該腳本超時的,並送我一個500錯誤消息。

有沒有辦法解決?

我讀了這裏後,即寫日誌消息每隔一段時間有助於避免這個問題,但我怎麼做呢?如果我嘗試回顯,寫入或返回某些內容,它只會返回值並結束我的功能。

下面是錯誤信息:

[Wed Oct 13 10:34:41 2010] [warn] [client 213.175.111.200] Timeout waiting for output from CGI script /home/virtual/site14/fst/var/www/interpreters/php-script 
[Wed Oct 13 10:34:41 2010] [error] [client 213.175.111.200] Premature end of script headers: php-script 
[Wed Oct 13 10:36:41 2010] [warn] [client 213.175.111.200] Timeout waiting for output from CGI script /home/virtual/site14/fst/var/www/interpreters/php-script 

謝謝!

+0

只是想知道......對於如此長的進程來預處理您的數據並提供緩存結果是否更有意義?如果服務器速度太慢以至於無法回答請求,我一直在運行網站,因爲新的請求在第一次完成之前到達,並且一旦請求過多,計算機就會崩潰(軟件方面)。 – 2014-04-29 18:53:49

+0

它會。這是很久以前的事了,現在,我會完全不同。在後臺執行處理,不涉及前端等。 – 2014-04-30 06:54:16

回答

4

對於那些尋找一個答案,有一對夫婦的事情,你會發現,這似乎工作:

  1. 您的Web服務器上的超時值設置爲0或一些比較大的。我最終將它設置爲0,因爲我需要我的腳本運行,就像永遠一樣。
  2. 如果由於使用共享主機而導致1不可能,最可能的選擇是定期返回一些日誌信息。我不得不警告你不要把這個代碼變成一個函數,因爲不可能連續地返回一個函數。您可以使代碼的一部分功能,但最終,歷久彌新echo功能會爲你做它
  3. 你可以嘗試一些彗星的方法,但是他們是相當複雜的,並極有可能不會解決所有問題。

P.S.我有點解決了使用JavaScript重定向的問題,這是a * s中的一個難題,所以我不建議任何人以同樣的方式進行操作。

+0

感謝您對原始問題的跟進。像我這樣的Google員工正在努力解決問題。對於您的解決方案#1,您是在哪裏修改TimeOut值的? – 2011-07-03 00:35:22

+1

可以在配置文件以及.htaccess中完成。看到這裏:http://httpd.apache.org/docs/2.0/mod/core.html#timeout – 2011-07-03 19:34:10

+0

它看起來像有一個特定的請求超時模塊mods -available/reqtimeout.conf可以定義更大粒度的超時值,雖然可能不值得在我們的情況下遇到麻煩......(我甚至建議把它關掉!) – 2014-04-29 18:48:45