2010-10-13 104 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