[英]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(' & ', ' & ', $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.