超时后重复php脚本

时间:2010-11-04 15:06:39

标签: php

我的php脚本会创建图像的缩略图。有时当它处理大量图像时,由于我的服务器上有时间限制,脚本必须运行很长时间并在60秒后结束。

我可以告诉脚本在59sek之后超时然后重复吗?

我需要一些想法。

编辑: 我不认为我的网络托管允许我更改max_execution_time

5 个答案:

答案 0 :(得分:2)

我简直不敢相信这是我的答案..

loopMe.php:

<meta http-equiv="refresh" content="65;url=loopMe.php">
<?php

  /* code that is timing out here */

?>

你最好的选择可能是像其他人所建议的那样关注set_time_limit()

重要提示:此循环永远不会结束。但是,只要脚本成功结束,您就可以使用会话变量,例如$_SESSION['stopLoop']来标记。在打印元刷新线之前,您可以检查其值。

答案 1 :(得分:1)

如果您不想修改代码,请使用set_time_limit(0),它设置为没有时间限制。

set_time_limit(0)

http://php.net/manual/en/function.set-time-limit.php

我不建议使用,但如果你的系统增长,这需要很长时间处理。最好以这样一种方式重新编码:只有在服务器处于低流量时才运行它并控制它处理数据的时间。

例如,您可以将您需要处理的数据存储在队列中,并尽可能多地处理每晚一次的寡妇。

答案 2 :(得分:0)

set_time_limit(0);

答案 3 :(得分:0)

是的,如上所述建议使用set_time_limit它会增加sript执行超时。

如果你处于循环中处理多个文件,那么每次处理文件到预期的持续时间之前都要set_time_limit。即如果假定文件在处理使用set_time_limit(60)

之前执行最多 60s 执行

答案 4 :(得分:0)

如果你的服务器没有在safe mode中使用php运行,你可以使用set_time_limit($ time);其中$ time是执行脚本所需的时间,例如你可以使用set_time_limit(240);将超时设置为4分钟。

或者例如,您可以在脚本中找到已经过了多长时间并且在超时到期之前添加一些秒(set_time_limit(10);)直到脚本完成。 (如果多次调用set_time_limit(),则会添加每次调用的时间。)

使用this代码,您可以计算每个图像的经过时间和之后的时间,并将其与服务器超时进行比较。

此外,您可以修改脚本以记录已经处理过的图像,如果超时,则执行相同的任务。

您可以从服务器中的cron作业运行脚本(如果允许的话),使其定期运行。看一下这个article