我有一个包含2000页的网站,我希望使用file_get_html()
函数和正则表达式遍历每个页面以生成站点地图。
显然,这不能在一个服务器端执行中完成,因为由于最大执行时间而耗尽时间。我想它需要执行较小的操作,将进度保存到数据库,然后排队下一个任务。有什么建议吗?
答案 0 :(得分:20)
当您运行命令行时,将没有最长执行时间。
如果您的提供商允许操作,您也可以使用set_time_limit(0);
。
我无法确定您的IP地址是否会被禁止 - 因为这取决于您发送请求的服务器的安全性。
其他解决方案
您可以获取一个(或几个)页面,并在整个源代码中搜索新的URL。然后,您可以将它们排入数据库中。然后在下一次运行时,您将处理队列。
答案 1 :(得分:3)
答案 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