0

基本上我需要绕过最大执行时间。

我需要以不同的时间间隔抓取页面以获取信息,这意味着以这些时间间隔调用机器人,以从数据库加载链接并废弃链接指向的页面。

问题是,加载机器人。如果我用 javascript 加载它(如 Ajax 调用),浏览器会抛出一个错误,指出页面响应时间过长 yadda yadda yadda,另外我必须保持页面打开。

如果我从 PHP 中执行此操作,我可能会将执行时间延长到所需的时间,但如果它确实引发错误,我无权终止进程,并且浏览器中不会显示任何内容,直到 PHP 执行完成了吧?

我想知道是否有人有任何技巧来解决这个问题?刮板以不同的时间间隔自行执行,而我无需一直观看它。

干杯:)

4

4 回答 4

2

像这样使用set_time_limit()

set_time_limit(0);
// Do Time Consuming Operations Here
于 2009-02-25T13:02:39.183 回答
1

看看Sphider(PHP 搜索引擎)是如何做到这一点的。

基本上,如果有 continue=true 参数集,您将只处理您需要的部分站点,做您的事情,然后继续下一个请求。

于 2009-02-25T13:12:11.610 回答
1

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

您可以使用flush()解决此问题:

flush()

(PHP 4,PHP 5)

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

于 2009-02-25T13:41:10.527 回答
0

通过 CRON 运行并将蜘蛛分成块,因此它一次只会执行几个块。从具有不同参数的 CRON 调用以仅处理几个块。

于 2009-02-25T15:20:03.813 回答