2011-11-20 117 views
2

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

在我的PHP脚本我设置:

set_time_limit(0); 
ignore_user_abort(true); 
+0

您的主机是否允许自定义限制? –

回答

1

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

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

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

0

看一看maximum_execution_time

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

+0

我使用'set_time_limit(0)'设置了最大执行时间' – pixel

+0

尝试在php.ini中设置它? –

0

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

memory_limit = 128M 
+0

我已经设置了日志冗长来注意到我没有看到任何错误。另外设置内存限制没有帮助。 – pixel

+0

既不apache或PHP日志? – salla

1

尽管你在脚本中设置什么时间限制,网络请求可能是因为客户端放弃,或更早的时间,因为在中间任何代理服务器放弃,或可能如果Apache服务器配置为放弃。

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

考虑使用示出反馈模式:

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