2012-06-12 17 views
-1

我有擦伤的信息的网站,然后将值插入到数据库中的履带,它似乎插入第一个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刮功能

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); 
} 

这个问题的任何帮助,将不胜感激。

+2

你在哪里调用'addToCatalog'? – bfavaretto

+0

你怎么知道的履带还在刮网站停止获取插入的项目后? – Mike

+0

你检查从插入查询返回值?假设查询成功是一个糟糕的糟糕的方式。 –

回答

0

如果过程的执行大约30秒后停止,您的问题可能是max_execution_time设置。

+0

没有已经调试它不能吧,插入时间的每一行都需要不到一秒钟 –

+0

多久? 0.9会特别长。 – Sherlock

+0

我不知道到底是因为我还没有计时,但它并没有超过我的max_execution_time –

0

不久之前发生了类似问题,结果证明这是由于PHP作为FastCGI运行并且进程守护进程终止脚本,请尝试在脚本退出之前计算它所花费的秒数(如果它每次相同)时间,尝试切换到CGI,然后再试一次。

它也可能是您的虚拟主机终止脚本来保护共享资源,因此,如果您使用的是共享托管服务器,它可能是值得的升级。