2013-04-24 73 views
0

我从一个网站上列出了一些产品,并且在数据库中保存了产品页面的url,并通过表格获取网址并使用简单的html dom解析器刮我正在使用下面的代码。PHP:连接中止,同时从网站上抓取数据

<?php 
error_reporting(E_ALL); 
ignore_user_abort(true); 
require_once('lib/simple_html_dom.php'); 
set_time_limit(0); 
ini_set('memory_limit', '1024M'); 
ini_set('max_input_time ', '99999'); 
$catid = $_REQUEST['catid']; //passing category id from url 
//getting category product url's from DB. 
$query = mysql_query("select * from cat_prod where catid='".$catid."' ") or die(mysql_error()); 
if($query){ 

    while($arr = mysql_fetch_array($query)){ 

     $html = file_get_html($arr['purl']); 

      if(is_object($html)){ 
       $i=1; 
       foreach ($html->find('h1') as $elem){ 
        if(is_object($elem) && isset($elem)) 
         echo $i.' : '.$elem->plaintext.'<br/>'; 
        if($i==2) exit; 
       $i++; 
       } 
       $html->clear(); 
       unset($html); 
      } 
    } 
} 

?> 

当我在一次迭代后死亡执行它的罚款,但超过一个抛出连接中止错误。

+1

有多少请求在您做刮远程站点?也许远程站点有一个阻止请求的防火墙,因为它检测到来自一个源(您的站点)的太多连接。 – Samutz 2013-04-24 20:38:24

+3

Arg!将原始用户输入传递给SQL字符串。这是一个等待发生的SQL注入攻击! – Matt 2013-04-24 21:11:39

回答

0

尝试在循环中进行睡眠。你可能用DOS攻击敲击网站。

而且你的脚本SQL注入问题$catid