我的php脚本创建图像的缩略图。有时,当它处理大量图像时,由于服务器上的时间限制,脚本必须运行很长时间并在60秒后结束。超时后重复php脚本
我可以告诉脚本在59sek后超时,然后重复吗?
我需要一些想法。
编辑: 我不认为我的虚拟主机可以让我改变的max_execution_time
我的php脚本创建图像的缩略图。有时,当它处理大量图像时,由于服务器上的时间限制,脚本必须运行很长时间并在60秒后结束。超时后重复php脚本
我可以告诉脚本在59sek后超时,然后重复吗?
我需要一些想法。
编辑: 我不认为我的虚拟主机可以让我改变的max_execution_time
set_time_limit(0);
耶如上建议使用set_time_limit
这将增加sript执行超时。
如果您正在循环处理多个文件,那么在您将文件处理到预计的持续时间之前,每次都会执行set_time_limit
。也就是说,如果假定一个文件采取最大执行处理使用set_time_limit(60)
我无法相信这就是我的回答之前..
loopMe.php:
<meta http-equiv="refresh" content="65;url=loopMe.php">
<?php
/* code that is timing out here */
?>
你最好的打赌虽然可能是看像set_time_limit()
像其他人所建议的。
重要提示:此循环将永不结束。但是,只要脚本成功结束,您就可以拥有一个会话变量,例如$_SESSION['stopLoop']
。在打印元刷新行之前,您可以检查它的值。
+1是目前最实用的答案,值得认真考虑:纯粹由PHP驱动的解决方案将更难以实施! – 2010-11-04 15:21:29
用于在脚本实际完成时设置标志的+1。那么你显然可以展示你的成功信息和其他任何东西。 – 2010-11-04 15:54:05
如果您不想修改代码,请使用set_time_limit(0),该值设置为没有时间限制。
set_time_limit(0)
http://php.net/manual/en/function.set-time-limit.php
我不建议使用,虽然,如果你的系统的增长,这将花费很长的时间处理。最好重新编码,只有当您的服务器处于低流量时才能运行,并控制处理数据的时间。
例如,您可以将需要处理的数据存储在队列中,并尽可能在每个晚上的时间寡妇处理一次。
如果你的服务器不是用php运行在safe mode你可以使用set_time_limit($ time);其中$ time是需要执行脚本的时间,例如,您可以使用set_time_limit(240);设置4分钟的超时时间。
或者例如,您可以在脚本中找到已经过了多少时间,并在超时过期之前添加几秒钟(set_time_limit(10);),直到脚本结束。 (如果您多次致电set_time_limit(),您将添加每次通话的时间。)
使用this代码,您可以计算每个图像的经过时间和之后,将其与服务器超时进行比较。
此外,您还可以修改脚本以记录已处理的图像,并在超时的情况下继续处理同一点的任务。
您可以从服务器中的cron作业运行脚本(如果允许的话)使其定期运行。看看这个article
我认为你不能改变服务器的时间限制吗? – 2010-11-04 15:09:47