2011-04-05 105 views
2

我有一个PHP过程,用户在浏览器中运行,但往往需要相当长的时间 - 5分钟以上。我们只是切换到新的服务器,当我们尝试运行脚本时,它始终在4分钟时间内完全超时,发送到500内部服务器错误页面并在错误日志中输出以下错误:如何避免CGI超时?

超时由CGI脚本 等待输出脚本头

过早结束: cgi_wrapper

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

有没有什么办法可以解开这个似乎已经放在我们身上的CGI限制?我已阅读了FastCGI,但不知道如何在我们的服务器上安装(Apache,centOS,PHP 5.3)。

感谢您的帮助!

回答

1

可能是Web服务器超时等待脚本的响应。实际上,四分钟后,服务器似乎非常耐心。 FastCGI连接的默认值是30秒。

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

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

无论如何,任何需要10秒以上才能完成的脚本都是糟糕的设计。我建议在后台单独完成这项工作,并让客户端调查完成情况。请注意,无论您在服务器上做什么,某些浏览器/代理服务器都可能会超时。