0

是)我有的:

(如果需要,请查看或在 localhost 上触发:http: //pastebin.com/virLR7dF

(看一下展示我的案例的图片:http: //iv.pl/images/47143498348127804676.png

我有一个 PHP 脚本可以抓取给定的网站,并将数据提取为变量:

$ID = "data"; //this is just an example
$name = "data";
$price = "data";
$image = "data";

脚本会将这些数据放入 MySQL 数据库中。

怎么了?

我可以使用 for 循环将其自动化,这样我就可以一次获得更多数据。但是,如果我循环它 1,000,000 次,我的脚本将在某个时候冻结,并且重新开始(找到它中断的位置并从该点开始)是有问题的。

如何使用 PHP/JS 实现:

1.收集 10 部分数据

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

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

4.停止并在之前显示的信息中添加新信息

*有一个 PAUSE 功能在下一部分收集后停止

*在最后一部分收集后有一个恢复功能开始

4

2 回答 2

1

输出缓冲可能会在 PHP 中帮助您

试试ob_start & ob_flush

ob_start此函数将打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本发送输出(除了标题),而是将输出存储在内部缓冲区中。

ob_flush这个函数将发送输出缓冲区的内容(如果有的话)

于 2012-05-04T08:01:04.460 回答
0

执行此操作时,有些事情可能会导致问题。

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

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

2)你超过了时间限制。

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

例子:

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);
}
于 2012-05-04T08:16:51.900 回答