浏览器运行一段时间后,PHP脚本停止运行

时间:2013-01-18 21:37:48

标签: php timeout

我制作了一个PHP脚本,可能需要大约3个小时才能完成。我从浏览器运行它,大约45分钟后它停止做任何事情。我知道这一点,因为它轮询某些网址,然后将一些数据保存到数据库。所以它基本上停止将任何数据放到数据库中,这导致我得出它已经停止的结论。它仍然在浏览器中显示它会加载页面,但它无休止。

没有任何错误,所以它可能是某种超时......但它发生的地方是神秘的,或者我怎样才能防止它发生。在我的情况下,我无法使用CLI,我必须使用浏览器客户端来启动脚本。

我试图把

set_time_limit(0);  

但它没有明显效果。什么可能导致超时和修复它的任何建议?

5 个答案:

答案 0 :(得分:5)

试试这个:

set_time_limit(0); 
ignore_user_abort(true);
ini_set('max_execution_time', 0);

答案 1 :(得分:3)

大多数虚拟主机会杀死运行一段时间的进程。这是针对无限循环的故障保护。

向您的主人询问此问题,看看是否有任何方法可以禁用此特定脚本。在某些情况下,杀手不适用于Cron任务或SSH运行的进程。但是,这因主机而异。

答案 2 :(得分:0)

可能是超时的浏览器,不确定浏览器是否会这样做,但是我也从来没有一个页面需要这么多时间。

建议:我假设您正在运行循环。加载一个页面然后在对另一个页面的ajax调用中运行循环的每次迭代,而不是触发下一个迭代直到前一个迭代返回。

答案 3 :(得分:0)

PHP中有一个设置可以在一段时间后终止进程。这对共享服务器尤其重要(您不希望一个进程使整个服务器运行速度慢。)

您需要询问您的主机是否可以修改php.ini(通过.htaccess)。特别是max_execution_time设置。

答案 4 :(得分:0)

如果您正在使用会话,那么您需要查看'session.cookie_lifetime'而不是set_time_limit。如果您使用的是数组,则数组大小也可能会填满。

如果没有关于脚本如何处理任务的更多信息,则很难识别。