我有什么:
(如果需要,请查看或触发localhost:http://pastebin.com/virLR7dF)
(看一下展示我案例的图片:http://iv.pl/images/47143498348127804676.png)
我有一个PHP脚本可以抓取给定的网站,并将数据提取为varibles:
$ID = "data"; //this is just an example
$name = "data";
$price = "data";
$image = "data";
脚本会将此数据放入MySQL数据库中。
有什么问题?
我可以使用for循环自动化它,这样我就可以一次获得更多数据。但是,如果我将它循环1,000,000次,我的脚本将在某个时刻冻结,并从开始(找到它破坏并从那一点开始)是有问题的。
PHP / JS如何实现:
1。收集10份数据
2. 停止并显示有关已收集数据的信息
3. 收集下一部分数据
4. 停止并向新显示的信息添加新信息
* 在下一部分收集后暂停PAUSE功能
* 在最后一部分收集后启动RESUME功能
答案 0 :(得分:1)
输出缓冲可能在PHP中帮助您
ob_start 此功能将打开输出缓冲。输出时 缓冲是活动的,没有从脚本发送输出(除了 标题),而输出存储在内部缓冲区中。
ob_flush 此函数将发送输出缓冲区的内容(如果 任何)
答案 1 :(得分: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);
}