我有一个用户在浏览器中运行的PHP进程,但往往花费相当长的时间 - 超过5分钟。我们刚刚切换到新服务器,当我们现在尝试运行脚本时,它会在4分钟内完全超时,发送到500 Internal Server Error页面并在错误日志中输出以下错误:
超时等待CGI的输出 脚本
脚本标题的提前结束: cgi_wrapper
有趣的是,PHP进程似乎在后台完成。如果我们离开500错误页面并等待一段时间,那么脚本中的所需更改就会完成。
有没有办法取消这个似乎已放在我们身上的CGI限制?我已经阅读了有关FastCGI的内容,但我不确定如何在我们的服务器上安装它(Apache,centOS,PHP 5.3)。
感谢您的帮助!
答案 0 :(得分:1)
Web服务器可能会超时等待脚本的响应。实际上有四分钟服务器似乎很耐心。 FastCGI连接的默认值为30秒。
它可能有助于在等待时向客户端发送(和flush()
)一些数据。这告诉Web服务器和浏览器请求仍然存在。
例如,如果您的脚本最后提供HTML页面,您可能会不时发送<!-- please wait... ->
。它不会对用户可见。
无论如何,任何需要10秒以上才能完成的脚本都是糟糕的设计。我建议在一个单独的进程中在后台执行该工作,并让客户端轮询完成状态。请注意,无论您在服务器上执行什么操作,某些浏览器/代理都可能会超时请求。