我有一个默认的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的时间长度:
如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返回的时间,以秒为单位