0

我有几个 foreach 循环,并且在每次使用结束时

set_time_limit(30)

它将计数器重新启动回零。

现在脚本运行时间更长(我使用 API 获取 5000-10000 篇文章并将它们存储在数据库中),但过了一段时间(当它处理已经有很多数据时)我得到“超过 30 秒的最大执行时间”。

会不会是因为内存不足?我该如何解决这个问题?

该脚本正在使用 API 获取文章,并且基本上像这样使用 foreach 循环

foreach($articles as $article)
{
//do stuff with single article using $article

set_time_limit(30);
}

而且我不认为它需要超过 30 秒来获取和处理一篇文章,但显然在脚本运行一段时间后,它达到了这个限制。我究竟做错了什么?我不想让脚本通过使用 set_time_limit(9000) 或类似的东西来完成超过 30 秒的 5 秒工作,这可能会完成工作,但我认为这不是一个好方法解决问题?

4

3 回答 3

3

你为什么不做

set_time_limit(0);

你脚本的第一行?

于 2013-10-25T01:41:22.570 回答
1

如果出于某种疯狂的原因,您觉得必须设置时间限制,请考虑以下事项:

set_time_limit(0);
$n = 0; $inc = 1;
foreach($article as $v){
  // do stuff with $v - Less characters is faster
  $n+=$inc;
}
set_time_limit($n);

$inc根据您的需要进行更改。

于 2013-10-25T01:51:12.960 回答
0

尝试这个:

PHP has a function set_time_limit which sets the time limit of execution.
It has one argument set in seconds.
If you use like this,
set_time_limit(0)
then it will set unlimited time of execution.

Write this code in top.

您可以从这里参考更多:http: //php.net/manual/en/function.set-time-limit.php

  • 谢谢
于 2013-10-25T04:24:47.167 回答