我有一个抓取网站获取信息的爬虫,然后将值插入数据库,它似乎插入前4000行很好,然后突然停止向mysql数据库插入值,即使爬虫仍在抓取网站
数据库表
CREATE TABLE IF NOT EXISTS `catalog` (
`id` varchar(100) NOT NULL DEFAULT '',
`title` varchar(100) DEFAULT NULL,
`value` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
PHP插入功能
function addToCatalog($id, $title, $value){
$q = "INSERT INTO catalog VALUES('$id', '$title', $value)";
return mysql_query($q, $this->connection);
}
php scrape功能
function scrape($pageNumber){
$page = file_get_html('http://example.com/p='.$pageNumber);
if($page){
$id = array();
$title = array();
$value = array();
//id
if($page->find('.productid')){
foreach ($page->find('.productid') as $p) {
$id[] = $p->innertext;
}
}
//title
if($page->find('.title')){
foreach($page->find('.title') as $p){
$title[] = $p->innertext;
}
}
//value
if($page->find('.value')){
foreach($page->find('.value') as $p){
$value[] = $p->innertext;
}
}
for($i=0; $i<sizeof($id); $i++){
$add = $database->addToCatalog($id[$i], $title[$i], $value[$i]);
echo $id[$i]." ".$title[$i]." ".$value[$i]."<br>";
}
}
}
for($i=0; $i<31300; $i++){
scrape($i);
}
对此问题的任何帮助都将不胜感激。
答案 0 :(得分:0)
如果大约30秒后该过程的执行停止,则您的问题可能是max_execution_time
设置。
答案 1 :(得分:0)
不久前有一个类似的问题,结果是因为PHP运行为FastCGI并且进程守护进程终止了脚本,尝试计算脚本退出之前所需的秒数,如果它每次都相同的数量,尝试切换到CGI然后再试一次。
也可能是您的Web主机终止脚本以保护共享资源,因此如果您使用的是共享托管服务器,则可能值得升级。