簡體   English   中英

使用PHP緩存RSS feed?

[英]Cache RSS feed using PHP?

我當前正在顯示多個RSS提要,但是這會導致網站加載緩慢,並且如果提要無法加載,有時可能無法正確加載。 我正在使用PHP通過以下示例顯示供稿:

<?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>';

 }
?>

為了解決這個問題,我想將其存儲在緩存中,並每小時檢查一次。 我該怎么做呢?

謝謝。

我建議您使用Memcache for PHP (RAM中的分布式緩存系統)。 該解決方案速度很快,可以處理任何數據類型。

此外,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM