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错误的主要内容,如果未能解决你的问题,请参考以下文章