1

我目前正在显示几个 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>';

 }
?>

为了帮助解决这个问题,我想将它存储在缓存中并让它每隔一小时左右检查一次。我该怎么做呢?

谢谢。

4

1 回答 1

0

我建议您使用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(一小时中的秒数)

于 2013-08-05T14:03:36.613 回答