2013-04-23 58 views
0

我使用简单的HTML DOM解析器刮产品从一个网站,我写了下面的代码为这个PHP:网页加载无限的时间

<?php 
    error_reporting(E_ALL); 
    require_once('lib/simple_html_dom.php'); 
    set_time_limit(0); 
    ini_set('memory_limit', '1024M'); 
    ini_set('max_input_time ', '99999'); 
    $url='http://www.yourpoolhq.com/pool-supplies/aboveground/pool-liners/round/unibead.html'; 
    $html = file_get_html($url); 

    if(is_object($html)){ 
     foreach ($html->find('div.category-products') as $elem){ 

      $data = $elem->innertext; 
      $strdata = str_get_html($data); 
      foreach ($strdata->find('a') as $a) { 
        if($a->plaintext!=''){ 
         get_detail_page($a->href); 
         flush(); 

        } 
        flush(); 
      } 
      unset($data); 
      unset($strdata); 
     } 
     $html->clear(); 
     unset($html); 
    } 

    function get_detail_page($href){ 
    $details = file_get_html($href); 
     if(is_object($details)){ 

      foreach ($details->find('h1') as $ess) { 
           //print_r($ess); this has data 
       echo $ess->plaintext; // not getting this, Why this is not printing. x-(               
       flush();  
      } 
      $details->clear(); 
      unset($details); 
     } 
    flush();  
} 


    ?> 

没有得到什么错误我在做什么在这里。任何想法的家伙。

编辑:我已经更新了代码在某些地方添加刷新并评论错误部分。

+0

向我们展示您的file_get_html()? – bwoebi 2013-04-23 17:43:16

+0

它的功能simple_html_dom.php http://simplehtmldom.sourceforge.net – ravisoni 2013-04-23 17:50:32

+0

清除一个垃圾代码,看看是否有效。并添加每一块代码,看看是什么导致问题 – Reshad 2013-04-23 17:42:36

回答

0

你的代码本身没有任何明显的缺陷。我能想到的唯一的事情是file_get_html由于您的服务器和somedomain.com上的远程服务器之间的延迟而花费了很长时间。通过延迟工具(在您使用PHP的服务器上执行tracert,ping等)可能是值得研究的。

+0

你可能是正确的,但是当我尝试直接调用get_detail_page($ url)这是正常工作,但是当我把它放在循环中的上面的代码,它开始恼怒我mozilla说:连接被重置 – ravisoni 2013-04-23 18:13:16

+0

@ravisoni:好吧,所以,如果它是工作时,你手动提供$ url,我猜这是要么中间请求超时,要么b。它收到的URL格式不正确,请问你们可以调查两个吗?(另外,对于怯懦而不离开原因的懦夫 - 总是赞赏) – 2013-04-23 20:18:04

+0

检查代码现在几乎完成,但文本没有得到:'( – ravisoni 2013-04-23 20:25:20