Избегать слияния/объединения нескольких каналов с помощью Simplepie?

Вот моя проблема. Я использую Simplepie для получения RSS-каналов. На одной странице я пытаюсь отобразить два RSS-канала (например, в двух разных столбцах). Два фида из одного и того же домена (но я не вижу в этом проблемы, т.е. domain.com/feed1, domain.com/anotherfeed).

Моя проблема в том, что Simplepie продолжает объединять фиды. Таким образом, в первом столбце я правильно вижу первый канал, но второй столбец представляет собой объединенную версию моих двух каналов, что не является намерением.

Вот что я делаю:

$feed = new SimplePie();
$feed->set_feed_url($url1);
$feed->init();          
$rss = $feed->get_items();
$feed->__destruct(); // Do what PHP should be doing on it's own.
unset($feed); 

$feed = new SimplePie();
$feed->set_feed_url($url2);
$feed->init();          
$rss = $feed->get_items();
$feed->__destruct(); // Do what PHP should be doing on it's own.
unset($feed); 

Последние две строки — это попытка избавиться от первого экземпляра $feed, но, кажется, ничто не может избежать слияния двух каналов во втором раунде.

Сначала я думал, что это связано с проблемами кэширования, но отключение кэширования не помогает.

Поиск по сообществу не дает ответов, поэтому я почему-то один с этой проблемой. Это говорит мне, что я здесь что-то принципиально упускаю? В принципе, было бы неплохо узнать, как я действительно могу отключить первую ленту, чтобы она не сливалась со второй?

Я действительно надеюсь, что предоставил достаточно информации, чтобы вы, ребята, могли ответить. Если нет, то извините, и я сделаю все возможное, чтобы обновить этот вопрос.


person user2135084    schedule 05.03.2013    source источник


Ответы (1)


Назовите свой второй канал как-то иначе, чем $feed, возможно, это не имеет значения на моей домашней странице. Я делаю это в уме. :

<?php 
include_once './news/php/autoloader.php'; 
$muskblogFeed = new SimplePie();
$muskblogFeed->set_feed_url('http://blog.muschamp.ca/feed/');
$muskblogFeed->init();
$quotationFeed = new SimplePie();
$quotationFeed->set_feed_url('http://quotations.muschamp.ca/qotdFeed.php');
$quotationFeed->init();
$miniatureFeed = new SimplePie();
$miniatureFeed->set_feed_url('http://musksminiatures.wordpress.com/feed/');
$miniatureFeed->init();
?>

Затем в теле для отображения каналов у меня есть это:

    <h3>My Quotation of the Day <a href="<?php print $quotationFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <?php foreach ($quotationFeed->get_items(0, 1) as $item): ?>
            <?php print('<blockquote id="quotation">' . $item->get_content() . '<br/><a href="' . $item->get_permalink() . '" style="float: right; padding-top: 2px; margin-top: 5px;">' . $item->get_title() . '</a></blockquote>'); ?>
    <?php endforeach; ?>
    <br />
    <h3>Now on Muskblog <a href="<?php print $muskblogFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <ul>
    <?php foreach ($muskblogFeed->get_items(0, 3) as $item): ?>
        <li>
            <a href="<?php print $item->get_permalink(); ?>">
            <?php print $item->get_title(); ?></a>
        </li>
    <?php endforeach; ?>
    </ul>
    <h3>Now on Musk's Miniatures <a href="<?php print $miniatureFeed->subscribe_url(); ?>"><img src="CommonImages/SocialMediaIcons/rss_16.png" class="rss16" /></a></h3>
    <ul>
    <?php foreach ($miniatureFeed->get_items(0, 3) as $item): ?>
        <li>
            <a href="<?php print $item->get_permalink(); ?>">
            <?php print $item->get_title(); ?></a>
        </li>
    <?php endforeach; ?>
    </ul>

Вышеупомянутое работает нормально, возможно, вам нужно разбить работу на голову и тело, я не парень PHP, я даже не претендую на переполнение стека. Очевидно, что область действия переменных в PHP больше, чем один блок кода, но я никогда не уверен, как долго переменные остаются установленными. Вы, кажется, спешите unset() свой.

person Muskie    schedule 12.03.2013