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

如何使用PHP获得无限的最大执行时间?,php,execution-time,Php,Execution Time,我有一个有2000个页面的站点,我想使用file\u get\u html()函数和正则表达式迭代每个页面以生成一个站点地图 显然,这不能在一次服务器端执行中完成,因为由于执行时间最长,它将耗尽时间。我想它需要执行较小的操作,将进度保存到数据库,然后将下一个任务排队。有什么建议吗?当您在命令行中运行它时,不会有最长的执行时间 您也可以使用set\u time\u limit(0) 我不知道你的ip地址是否会被禁止,因为这取决于你发送请求的服务器的安全性 其他解决方案 您可以获取一个(或几个)页

我有一个有2000个页面的站点,我想使用
file\u get\u html()
函数和正则表达式迭代每个页面以生成一个站点地图


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

当您在命令行中运行它时,不会有最长的执行时间

您也可以使用
set\u time\u limit(0)

我不知道你的ip地址是否会被禁止,因为这取决于你发送请求的服务器的安全性


其他解决方案


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

您应该考虑使用作业队列和WorkActudio实现。我会推荐你。它们都有本机php绑定。

使用
设置时间限制(0)
。有关详细说明,请参见

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


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

最好的方法是使用remot api。 例如,您可以使用import.io并使用json格式从每个页面获取参数。 这是一种在每次调用file\u get\u content或flie\u get\u html时都能获得轻薄页面的方法


但是对于这个问题,curl比php.ini中的file_get_html

设置max_execution_time为0更好。它会影响服务器上运行的每个脚本,但如果您正在寻找服务器级别的修复程序,这就可以了


一个简单的回答:这取决于您的托管提供商。我假设托管提供商不允许您更改执行时间(即不工作)?虽然这听起来像是你可以在自己的计算机上运行一次/定期脚本并上传结果页面。Juhana:即使他们允许将PHP的时间限制更改为0,Web服务器终止连接的问题始终存在,还有一种可能性是,托管系统中有一些系统会杀死长时间运行的PHP线程。您应该增加时间限制,而不是将其设置为0=无限,因为这可能会产生重影进程。感谢Wesley。理想情况下,我希望在他们取得进展时得到结果。另一个例子是,搜索引擎蜘蛛不会一次抓取整个互联网。必须有一种方法将复杂的操作分解为较小的操作,并将执行排队。有什么想法吗?@我同意,我绝对不建议这样做。你的其他解决方案听起来不错。虽然我不知道如何在php中触发队列。我认为使用cron不是最优雅的方式。肖恩建议使用Gearman或zeromq。我会检查它们并让你知道。请使用->我本来会编辑文章的,但编辑太小,我无法编辑。
max_execution_time = 0