php中的长时间计算导致503错误

Posted

技术标签:

【中文标题】php中的长时间计算导致503错误【英文标题】:Long computation in php results in 503 error 【发布时间】:2012-01-02 08:56:58 【问题描述】:

我的脚本需要很长时间才能执行。结果服务器响应 503 错误。如何设置更长的执行时间?

在我的 php 脚本中我设置了:

set_time_limit(0);
ignore_user_abort(true);

【问题讨论】:

您的主机是否允许自定义限制? 【参考方案1】:

这个问题与PHP Background Processes 非常相似。所以请阅读;另外,

首先你需要在php.ini中更改时间限制; you cannot change it in the script itself。或者在 .htaccess 中使用php_value

其次,您可能希望修改与用户交互的方式更友好,以便页面使用更新;你可以探索ajax; http-刷新;用于不同方法的多部分页面。如果您正在进行长时间计算,也许您可​​以在后台启动它们并更新数据库,稍后再检索结果。

【讨论】:

【参考方案2】:

尽管您在脚本中设置了什么时间限制,但 Web 请求可能会提前超时,因为客户端放弃,或者因为中间的任何代理服务器放弃,或者可能如果 apache 服务器配置为放弃。

正如其他回答者提到的那样; maximum_execution_time 变量可能会有所帮助,但最好不要让访问者长时间等待。

考虑使用显示反馈的模式:

    用户启动操作;例如 POST 请求 PHP 脚本立即返回包含 javascript 或 iframe 的页面。 javascript/inner 框架调用长时间运行的脚本。 每隔几秒钟,javascript 就会使用类似 LONGPOLL 的机制向用户更新脚本的运行情况。 在完成或出错时,javascript 会通知并重定向到下一页。

【讨论】:

【参考方案3】:

看看maximum_execution_time。

但是据我所知,这通常需要在 php.ini 中设置,简要查看手册说如果不是在安全模式下,这应该由脚本设置。

【讨论】:

我使用set_time_limit(0)设置最大执行时间【参考方案4】:

您不知道确切的错误?没有它,我猜是内存限制,你也改变了吗? 检查你的 php.ini:

memory_limit = 128M

【讨论】:

我已设置日志详细程度以注意我没有看到任何错误。另外设置内存限制没有帮助。

以上是关于php中的长时间计算导致503错误的主要内容,如果未能解决你的问题,请参考以下文章

arcgis采样长时间没结果

为啥 Azure 会出现间歇性错误 503。服务不可用?

PHP避免长时间加载导致的重复

nginx 代理在响应时间过长时导致错误

AWS Elastic Beanstalk Worker 在长时间计算期间不活动后超时

Apache 存档返回 http 错误 503