如何避免CGI超时?

时间:2011-04-05 04:21:53

标签: php apache timeout cgi fastcgi

我有一个用户在浏览器中运行的PHP进程,但往往花费相当长的时间 - 超过5分钟。我们刚刚切换到新服务器,当我们现在尝试运行脚本时,它会在4分钟内完全超时,发送到500 Internal Server Error页面并在错误日志中输出以下错误:

  

超时等待CGI的输出   脚本

     

脚本标题的提前结束:   cgi_wrapper

有趣的是,PHP进程似乎在后台完成。如果我们离开500错误页面并等待一段时间,那么脚本中的所需更改就会完成。

有没有办法取消这个似乎已放在我们身上的CGI限制?我已经阅读了有关FastCGI的内容,但我不确定如何在我们的服务器上安装它(Apache,centOS,PHP 5.3)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Web服务器可能会超时等待脚本的响应。实际上有四分钟服务器似乎很耐心。 FastCGI连接的默认值为30秒。

它可能有助于在等待时向客户端发送(和flush())一些数据。这告诉Web服务器和浏览器请求仍然存在。

例如,如果您的脚本最后提供HTML页面,您可能会不时发送<!-- please wait... ->。它不会对用户可见。

无论如何,任何需要10秒以上才能完成的脚本都是糟糕的设计。我建议在一个单独的进程中在后台执行该工作,并让客户端轮询完成状态。请注意,无论您在服务器上执行什么操作,某些浏览器/代理都可能会超时请求。