php中的长计算导致503错误

时间:2011-11-20 14:01:46

标签: php apache http-status-code-503

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

在我的PHP脚本中,我设置了:

set_time_limit(0);
ignore_user_abort(true);

4 个答案:

答案 0 :(得分:1)

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

正如另一位回答者所说; maximum_execution_time变量可能会有所帮助,但如果您没有让访问者等待很长时间,那会更好。

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

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

答案 1 :(得分:1)

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

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

在.htaccess中

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

答案 2 :(得分:0)

查看maximum_execution_time

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

答案 3 :(得分:0)

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

memory_limit = 128M