0

我使用 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; 
?> 

当您访问页面http://diealternative.org时,加载需要超过 20 秒。这并不奇怪,因为有很多要解析的提要,但是缓存呢?加载后,它不应该重新连接到提要,它应该使用缓存。

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

4

2 回答 2

1

有几件事:首先,我认为默认情况下它只缓存 60 分钟 - 我将我的设置为 24 小时,以便它保存一整天的缓存。第一次加载很慢,但之后加速。此外,该set_stupidly_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) {
   ...
}
于 2013-07-23T19:22:43.703 回答
0

对我有用的是使用 Simplepie 生成单独的 html 文件。这些我保存到服务器并将它们包含在主页上。通过使用 cronjobs,我让它们保持更新。

网站的加载时间现在很好。(最多快 150%!)

汤姆

于 2013-07-30T02:59:56.250 回答