首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在10%的时间内实现数据采集的自动化

如何在10%的时间内实现数据采集的自动化
EN

Stack Overflow用户
提问于 2012-05-03 09:59:08
回答 2查看 185关注 0票数 0

我拥有的:

(如果需要,可以在本地主机上查看或开火:http://pastebin.com/virLR7dF)

(看一看呈现我案例的图片:http://iv.pl/images/47143498348127804676.png)

我有一个PHP脚本,可以爬行给定的网站,并以可变的形式提取数据:

代码语言:javascript
复制
$ID = "data"; //this is just an example
$name = "data";
$price = "data";
$image = "data";

脚本将把这些数据放入MySQL DB中。

怎么了?

我可以使用for循环来自动化它,这样我就可以一次得到更多的数据。但是如果我把它循环1,000,000次,我的脚本会在某个时候冻结,然后重新开始(找到它的坏地方,然后从那个点开始)是有问题的。

如何使用PHP/JS使其达到:

1.收集10部分数据

2.停止并显示收集到的数据的信息

3.收集接下来的10部分数据

4.停止并向先前显示的信息中添加新信息。

*有一个暂停函数在下一部分收集后停止

*有一个简历功能可以在最后一部分收集后开始

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-04 08:01:04

输出缓冲可能会帮助您使用PHP

试试开始 & 同花顺

ob_start这个函数将打开输出缓冲。虽然输出缓冲是活动的,但是没有从脚本(除了头)发送输出,而是将输出存储在内部缓冲区中。 ob_flush这个函数将发送输出缓冲区的内容(如果有的话)

票数 1
EN

Stack Overflow用户

发布于 2012-05-04 08:16:51

在这样做的时候,有一些事情可能会引起问题。

1)在循环中触发错误,脚本停止执行。

解决方案:将错误转化为可捕获的异常。

2)你超过了时限。

解决方案:将时间限制设置为零

示例:

代码语言:javascript
复制
set_error_handler(function($errno, $errstr, $errfile, $errline) {
    if($errno != E_STRICT && $errno != E_DEPRECATED && $errno != E_NOTICE) {
      throw new Exception($errstr.' in '.$errfile.' on line '.$errline);
    }
    return false;
});

set_time_limit(0);

function my_loop_func() {
 // do what ever...
}

while(true) {
  try {
     my_loop_func();
  }
  catch(Exception $e) {
    // write some log message here might be good
  }
  sleep(10);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10429089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档