“504网关超时”后脚本继续执行

时间:2013-11-27 17:50:00

标签: php http-status-code-504

我在nginx + apache下运行此脚本。它将大型数据包(拆分为多个部分)发送到远程服务器,在循环中调用cURL执行。对我来说奇怪的是,在超时后我收到504错误进入浏览器(队长),但脚本仍然继续运行!

我已经对它进行了测试 - 并且脚本 发送了我要求它发送的所有数据,所以从技术上讲,这不是问题。但是我觉得像这样的任何不寻常的东西可能会在将来产生影响。

我很感激更有经验的开发人员可能在这个问题上分享的任何知识。

2 个答案:

答案 0 :(得分:3)

如果达到最大执行时间,则服务器发送504(在Apache中默认为30秒)。但是脚本仍然在后台运行 - 它只是停止向客户端发送数据。如果您预计脚本的运行时间超过最大执行时间并希望查看它返回的数据,则应考虑在服务器上提高最大执行时间设置或在其他地方运行脚本并通过套接字连接向浏览器报告或区间轮询。

另一方面,你为什么要使用nginx和apache?或者你的意思是它在两者上做同样的事情?

答案 1 :(得分:0)

我得到的问题与此相同。我想在这里说几句话。

从nginx服务器发送504错误。您可以通过增加nginx服务器(/etc/nginx/proxy.inc)中的超时设置来防止此错误。以下是我服务器上的配置

proxy_send_timeout 600; // 10分钟 proxy_read_timeout 600; // 10分钟

因此,如果您的脚本需要超过10分钟,那么您将看到504错误。

默认情况下,最长执行时间为30秒。我相信你已经增加了它,以便脚本可以在504错误后继续执行。如果将最大执行时间设置为一个等于nginx超时值(如上所述10分钟)的值,怎么样?