由于在php中使用了Simple_html_dom,我的网站已经放慢了速度

时间:2012-12-23 03:46:38

标签: php screen-scraping simple-html-dom

我将simple_html_dom用于我的社交书签网站,例如reddit,每页显示15个链接。每次加载页面时,都需要花费很多时间。对于ex我使用类似的代码如下从新闻网站提取数据。

$html = file_get_html('http://www.nytimes.com');
$img= $html->find('img',6);
echo'<img src="'.$img->src.'"style="height:100px;width:100px;float:left;margin-right:5px"/>';
$title = array_shift($html->find('title'))->innertext;
echo '<p style="font-size:13px"><strong>'.$title.'</strong></p>';
foreach($html->find('div') as $element)
 if($element->class=='article_txt'){
   echo $element->find('p',0);
   } 

是不是因为我使用这段代码,这会让我的网站花费太多时间来提取数据和显示?如果是,那么如何减少数据提取和显示的时间?

1 个答案:

答案 0 :(得分:2)

每个新请求都会导致file_get_html函数获取远程数据,显然,您必须等待它完成。您应该使用memcached http://php.net/manual/en/book.memcache.php之类的东西来缓存这些结果。设置memcached和Memcache后,您可以执行以下操作:

// You'd have to set it up before usage
$cache = new Memcache();
$key = md5('the-url-goes-here');

if (!($html = $cache->get($key)))
{
    $html = file_get_html('http://www.nytimes.com');
    $cache->set($key, $html);
}

// other code that uses $html