如何使用PHP获得无限的最大执行时间?

时间:2011-08-12 07:15:41

标签: php execution-time

我有一个包含2000页的网站,我希望使用file_get_html()函数和正则表达式遍历每个页面以生成站点地图。

显然,这不能在一个服务器端执行中完成,因为由于最大执行时间而耗尽时间。我想它需要执行较小的操作,将进度保存到数据库,然后排队下一个任务。有什么建议吗?

5 个答案:

答案 0 :(得分:20)

当您运行命令行时,将没有最长执行时间。

如果您的提供商允许操作,您也可以使用set_time_limit(0);

我无法确定您的IP地址是否会被禁止 - 因为这取决于您发送请求的服务器的安全性。


其他解决方案

您可以获取一个(或几个)页面,并在整个源代码中搜索新的URL。然后,您可以将它们排入数据库中。然后在下一次运行时,您将处理队列。

答案 1 :(得分:3)

您应该考虑使用作业队列和工作人员实施。我建议Gearmanzeromq。这两个都有本机的PHP绑定。

答案 2 :(得分:3)

使用set_time_limit(0)。有关详细说明,请参阅 PHP Manual

  

     
    

最长执行时间,以秒为单位。如果设置为零,则不会施加时间限制。

  

编辑:至于你的第二个问题,你不应该检查你的托管服务使用条款,看看它是否被允许。

答案 3 :(得分:0)

最好的方法是使用remot api。 例如,您可以使用import.io并使用json格式从每个页面获取param。 这是一种在每次调用file_get_content或flie_get_html

时获取轻量级页面的方法

但是对于这个问题,curl比file_get_html

更好

答案 4 :(得分:0)

在php.ini中将max_execution_time设置为0。它会影响您在服务器上运行的每个脚本,但如果您正在寻找服务器级别的修复程序,则可以执行此操作。

http://php.net/manual/en/info.configuration.php#ini.max-execution-time

max_execution_time = 0