1

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

我已经测试过了——脚本正在发送我需要它发送的所有数据,所以从技术上讲,这不是问题。但我认为像这样的任何不寻常的事情都可能在未来产生后果。

我将不胜感激更有经验的开发人员可能在此问题上分享的任何知识。

4

2 回答 2

4

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

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

于 2013-11-27T18:04:33.150 回答
0

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

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

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

因此,如果您的脚本运行时间超过 10 分钟,那么您将看到出现 504 错误。

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

于 2015-04-15T15:12:57.973 回答