2

ページごとに 15 個のリンクが表示される reddit のようなソーシャル ブックマーク サイトに simple_html_dom を使用しています。ページを読み込むたびに、かなりの時間がかかります。たとえば、ニュース Web サイトからデータを抽出するために、以下のような同様のコードを使用します。

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

このコードを使用しているため、サイトがデータを抽出して表示するのに時間がかかりすぎているためですか? はいの場合、データの抽出と表示の時間を短縮するにはどうすればよいですか?

4

1 に答える 1

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
于 2012-12-23T03:58:39.287 に答える