2012-12-23 35 views
2

中減速我對我的社交書籤網站(如reddit)使用了simple_html_dom,每頁顯示15個鏈接。每次我加載頁面,都需要很長時間。例如,我使用類似的代碼來提取新聞網站的數據。我的網站因使用了Simple_html_dom而在php

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

是因爲我使用這段代碼,這使得我的站點花費太多時間來提取數據和顯示?如果是,那我該如何減少數據提取和顯示的時間?

+0

他們 – 2012-12-23 04:10:30

+0

@Dagon你可以更具體 –

+1

http://developer.nytimes.com/docs如果不通過onre可用的API的api的那麼你只是偷了 – 2012-12-23 04:23:30

回答

2

每個新的請求都會導致file_get_html函數獲取遠程數據,顯然,您必須等待它完成。你應該使用類似memcached http://php.net/manual/en/book.memcache.php)來緩存這些結果。設置Memcached和內存緩存後,你可以做這樣的事情:

// 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 
+0

我完全不理解你 –

+0

我在我的網站上共享主機,所以我不能使用memcache ..你能以其他方式建議我嗎? –

+0

如果您不能說服他們啓用memcache,則可以使用文本文件來推出自己的緩存系統。您可以將每個請求保存在文本文件中,也可以緩存整個頁面直到添加新鏈接。您只需將HTML輸出保存在文件中即可。檢查這個:https://gist.github.com/4363114 – guhemama