繁体   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