如何在不超时的情况下执行PHP spider/scraper

如何在不超时的情况下执行PHP spider/scraper,php,web-crawler,Php,Web Crawler,基本上,我需要了解最长执行时间 我需要在不同的时间间隔刮取页面信息,这意味着在这些时间间隔调用bot,从数据库加载链接并刮取链接指向的页面 问题是,正在加载bot。如果我用javascript加载它(比如Ajax调用),浏览器会抛出一个错误,说页面响应yadda yadda yadda花费的时间太长,而且我必须保持页面打开 如果我从PHP内部执行,我可能会将执行时间延长到所需的时间,但是如果它确实抛出错误,我没有权限终止进程,并且在PHP执行完成之前浏览器中不会显示任何内容,对吗 我想知道有没有

基本上,我需要了解最长执行时间

我需要在不同的时间间隔刮取页面信息,这意味着在这些时间间隔调用bot,从数据库加载链接并刮取链接指向的页面

问题是,正在加载bot。如果我用javascript加载它(比如Ajax调用),浏览器会抛出一个错误,说页面响应yadda yadda yadda花费的时间太长,而且我必须保持页面打开

如果我从PHP内部执行,我可能会将执行时间延长到所需的时间,但是如果它确实抛出错误,我没有权限终止进程,并且在PHP执行完成之前浏览器中不会显示任何内容,对吗

我想知道有没有人有什么窍门可以绕过这件事?刮刀以不同的间隔自动执行,无需我全程观察

干杯:)

这样使用:

用作:

看看这是怎么回事

基本上,您只需处理所需站点的某些部分,完成自己的工作,然后在设置continue=true参数时继续执行下一个请求。

看看这是如何实现的

基本上,您只需处理所需站点的一部分,完成自己的工作,然后继续处理下一个请求(如果有continue=true参数集)

“在PHP执行完成之前,浏览器中不会显示任何内容”

您可以使用来解决此问题:

flush()

(菲律宾比索4,菲律宾比索5)

刷新PHP的输出缓冲区以及PHP使用的任何后端(CGI、web服务器等)。这将有效地将所有输出推送到用户的浏览器

“在PHP执行完成之前,浏览器中不会显示任何内容”

您可以使用来解决此问题:

flush()

(菲律宾比索4,菲律宾比索5)

刷新PHP的输出缓冲区以及PHP使用的任何后端(CGI、web服务器等)。这将有效地将所有输出推送到用户的浏览器


通过CRON运行并将spider分割成块,因此它一次只执行几个块。使用不同参数从CRON调用,只处理几个块。

通过CRON运行,并将spider拆分为块,因此它一次只处理几个块。使用不同参数从CRON调用,只处理少量数据块。

谢谢伙计,我将此与flush()欢呼声结合使用:)谢谢伙计,我将此与flush()欢呼声结合使用:)谢谢伙计,我将此与set_time_limit()欢呼声结合使用:)谢谢伙计,我将此与set_time_limit()欢呼声结合使用:)
set_time_limit(0);
// Do Time Consuming Operations Here