2013-08-05 85 views
0

我目前正在顯示幾個RSS提要,但它會導致網站加載緩慢,偶爾如果沒有加載提要,則無法正確加載。我使用PHP和我使用下面的代碼示例顯示飼料:使用PHP緩存RSS提要?

<?php 
error_reporting(0); 
$rss = new DOMDocument(); 
$rss->load('http://www1.skysports.com/feeds/11677/news.xml'); 
$feed = array(); 



foreach ($rss->getElementsByTagName('item') as $node) { 
    $item = array (
        'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
        'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
        'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 



    ); 
    array_push($feed, $item); 
} 
$limit = 2; 
for($x=0;$x<$limit;$x++) { 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
    $link = $feed[$x]['link']; 
    $date = date('l F d, Y', strtotime($feed[$x]['date'])); 

    echo '<div id="wholefeed"><div id="feed"><img src="img/SkySports.png" alt="logo" class="logo"><div id="rsstext"><a target="_blank" href="'.$link.'" title="'.$title.' ">'.$title.'</a></div></a></div></div>'; 

} 
?> 

爲了解決這個問題,我想將它存儲在緩存中,並有檢查它每隔一小時左右。我怎麼能這樣做呢?

謝謝。

回答

0

我建議你在RAM中使用Memcache for PHP,這是一個分佈式緩存系統。該解決方案速度快,可處理任何數據類型。

此外,Memcache易於使用。

<?php 
    // Connect to Memcache server 
    $memcache = new Memcache; 
    $memcache->connect('localhost', 11211) or die ("Could not connect"); 

    // Get feed data from Memcache 
    $feed = $memcache->get('KEY_FOR_FEED_DATA'); 
    if($feed === false) { 
     // The 'KEY_FOR_FEED_DATA' key has expired. You have to get 
     // the feed data again 

     // code to get the $feed variable 

     // Save feed data to Memcache 
     $memcache->set('KEY_FOR_FEED_DATA', $feed, false, EXPIRE_TIME); 
    } 

    // Here you have the $feed variable 
?> 

你只需要指定3600的expire_time(秒一小時)

+0

對不起,我用PHP不是真的好,所以我有點困惑:您可以如下修改代碼如何使用這個 – warnerr

+0

我上面寫的代碼是一個如何使用Memcache的例子。這個想法是從Memcache中檢索信息*始終儘可能*避免繁重的過程,在這種情況下,就是獲取RSS的過程(代碼中的第一部分)。現在更清楚了嗎? – vicentazo

+0

是的,它更清晰,但我不明白'KEY_FOR_FEED_DATA',這是什麼? – warnerr