Rss 缓存似乎不起作用-多馈送

Rss 缓存似乎不起作用-多馈送,rss,feed,simplepie,Rss,Feed,Simplepie,我使用simplepie合并rss源。我在这个页面上有两个部分,它们对不同的提要做相同的操作。我把它们分类。这是我的密码: $feeds=array( 'http://feeds.feedburner.com/Belvederegasse', 'http://diealternative.org/zeitschrift/feed/rss/', 'http://diealternative.org/arbeitsklima/feed/rss/', 'http://feeds.feedburner.

我使用simplepie合并rss源。我在这个页面上有两个部分,它们对不同的提要做相同的操作。我把它们分类。这是我的密码:
$feeds=array(
'http://feeds.feedburner.com/Belvederegasse',
'http://diealternative.org/zeitschrift/feed/rss/',
'http://diealternative.org/arbeitsklima/feed/rss/',
'http://feeds.feedburner.com/Arbeitszeit',
'http://feeds.feedburner.com/AugeFinance',
    'http://diealternative.org/nulllohnrunden/feed/',
    'http://diealternative.org/bulletin/feed/rss/',
    'http://feeds.feedburner.com/verteilungsgerechtigkeit',
    'http://feeds.feedburner.com/hochschule',
    'http://feeds.feedburner.com/Sozialmilliarde'
);        
$first_items = array();


foreach ($feeds as $url)
{
    $feed = new SimplePie();
    $feed->set_stupidly_fast(true);
    $feed->enable_order_by_date(true);
    $feed->enable_cache(true);
    $feed->set_feed_url($url);
    $feed->init();
    $items_per_feed = 5;

    for ($x = 0; $x < $feed->get_item_quantity($items_per_feed); $x++){
        $first_items[] = $feed->get_item($x);
    }

    unset($feed);
}

function sort_items($a, $b){
    return SimplePie::sort_items($a, $b);
}


usort($first_items, "sort_items");


foreach ($first_items as $item): 

    if ($itemlimit==8) { break; }

        //HTML output

    $itemlimit = $itemlimit + 1;
endforeach; 
?> 
$feeds=数组(
'http://feeds.feedburner.com/Belvederegasse',
'http://diealternative.org/zeitschrift/feed/rss/',
'http://diealternative.org/arbeitsklima/feed/rss/',
'http://feeds.feedburner.com/Arbeitszeit',
'http://feeds.feedburner.com/AugeFinance',
'http://diealternative.org/nulllohnrunden/feed/',
'http://diealternative.org/bulletin/feed/rss/',
'http://feeds.feedburner.com/verteilungsgerechtigkeit',
'http://feeds.feedburner.com/hochschule',
'http://feeds.feedburner.com/Sozialmilliarde'
);        
$first_items=array();
foreach($feed作为$url)
{
$feed=新的simplepi();
$feed->set\u dumbly\u fast(真);
$feed->按日期启用订单(true);
$feed->enable_cache(true);
$feed->set_feed_url($url);
$feed->init();
$items_/_feed=5;
对于($x=0;$x<$feed->get_item_数量($items_/_feed);$x++){
$first\u items[]=$feed->get\u items($x);
}
未结算(饲料);
}
函数排序\u项($a,$b){
返回SimplePie::sort_项($a,$b);
}
usort($first_items,“sort_items”);
foreach($first_项目作为$item):
如果($itemlimit==8){break;}
//HTML输出
$itemlimit=$itemlimit+1;
endforeach;
?> 
当您访问该页面时,加载所需时间超过20秒。这并不奇怪,因为有很多feed需要解析,但是缓存又是什么呢?加载后,它不应重新连接到提要,而应使用缓存


为什么每次加载都要花这么长时间。

有两件事:首先,默认情况下,它只缓存60分钟,我想-我将我的设置为24小时,这样它可以保存一整天的缓存。第一次加载很慢,但之后会加速。另外,
set\u dumbly\u fast
功能可能会禁用缓存或其他功能

其次,SimplePie将为您合并提要并按日期排序,您不需要这样的嵌套循环。试试这个:

$max_items_per_feed = 5;  // this pulls the top 5 articles from each feed
$max_items_total = 50;  // this caps the total articles
$feed = new SimplePie();
$feed->set_feed_url($feeds);

// limit the number of items
$feed->set_item_limit($max_items_per_feed);
$feed->enable_cache(true);
$feed->set_cache_duration(86400);  // refresh cache once a day - 24 hrs

// Run SimplePie.
$success = $feed->init();

// This makes sure that the content is sent to the browser as text/html and the UTF-8 character set (since we didn't change it).
$feed->handle_content_type();

foreach ($feed->get_items(0, $max_items_total) as $key=>$item) {
   ...
}

对我来说,有效的方法是使用Simplepie单独生成html文件。我将这些文件保存到服务器,并将其包含在主页上。通过使用cronjobs,我可以不断更新它们

该网站的加载时间现在是好的。(快150%!)


tom

您的站点花了30秒时间在FF 22中为我加载。哎哟您的服务器有多旧?非对象上的成员函数set_feed_url()???$feeds数组有什么问题,现在我使用$key->get_permalink()???您可以将一个提要数组传递给SimplePie,让它自动获取并对它们进行排序。在我的第二个提要上,我得到:致命错误:允许的内存大小为67108864字节,已在…中耗尽(尝试分配375801字节)。。。。在SimplePie中找不到任何用于设置内存的变量。php这很奇怪,似乎内存太多了。。。你是在限制我的例子中每个提要的文章数量吗?好吧,我删除了一些提要,不幸的是它们太大了。但整个网站仍然很慢。>24秒后加载。