Apache 2.2 CGI超时configuration

我有一个默认的Apache 2.2系统设置与Perl CGI脚本目录configuration如下:

ScriptAlias /jarvis/ "/opt/jarvis/cgi-bin/" 

除了我的一个脚本需要10分钟以上的处理,由于各种原因,在这里什么都不打印。

Apache似乎有10分钟(600秒)的CGI脚本运行时间 – 如果在这个时间框架内脚本没有输出,那么脚本将被终止并向浏览器/客户端发送一个500响应。

消息:

 [Thu Apr 23 13:57:53 2009] [warn] [client 127.0.0.1] Timeout waiting for output from CGI script /opt/jarvis/cgi-bin/jarvis.pl 

出现在一个系统(Ubuntu,通过apt-get安装)的日志中,但不在另一个系统上(Windows,通过软件包下载安装)。

我的问题是 – 在Apache 2.2中是否有任何configuration允许我运行超过10分钟的脚本而不会被杀死?

编辑

定期写出日志消息避免了这个错误 – 所以每隔几分钟写一条日志消息就可以确保长时间运行的进程不会被终止。 我最终通过在客户端上实现一个进度条并让我的脚本写入一个“。”来解决我的问题。 每隔一段时间更新一次吧。

谢谢,杰米

TimeOut指令定义了Apache在各种情况下等待I / O的时间长度:

  1. 从客户端读取数据时,如果读取缓冲区为空,则等待TCP数据包到达的时间长度。
  2. 向客户端写入数据时,如果发送缓冲区已满,则等待数据包确认的时间长度。
  3. 在mod_cgi中,等待CGI脚本输出的时间长度。
  4. 在mod_ext_filter中,等待从过滤进程输出的时间长度。
  5. 在mod_proxy中,如果没有configurationProxyTimeout,则默认的超时值。

http://cweiske.de/tagebuch/Running%20Apache%20with%20a%20dozen%20PHP%20versions.htm所示:

 FastCgiServer /var/www/cgi-bin/php-cgi-5.3.1 -idle-timeout 120 

空闲超时设置apache等待cgi返回的时间,以秒为单位