0

これが私の問題です。Simplepie を使用して RSS フィードを取得しています。同じページに 2 つの RSS フィードを表示しようとしています (たとえば、2 つの異なる列に)。2 つのフィードは同じドメインからのものです (ただし、domain.com/feed1、domain.com/anotherfeed など、ここでは問題とは考えていません)。

私の問題は、Simplepieがフィードをマージし続けることです。したがって、最初の列では最初のフィードを正しく表示していますが、2 番目の列は 2 つのフィードを組み合わせたバージョンです。これは意図したものではありません。

これが私がすることです:

$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); 

最後の 2 行は、最初の $feed インスタンスを削除しようとしていますが、2 番目のラウンドで 2 つのフィードがマージされることを回避できるものは何もないようです。

最初は、これはキャッシュの問題に関連していると思いましたが、キャッシュを無効にしても解決しません。

コミュニティを検索しても答えが得られないようです。何らかの理由で、この問題を抱えているのは私だけです。これは、ここで根本的に何かが欠けていることを示していますか? 基本的に、最初のフィードを実際に殺す方法を知っておくとよいので、2 番目のフィードにマージされませんか?

皆さんが答えるのに十分な情報を提供できたことを本当に願っています。そうでない場合は、申し訳ありません。この質問を更新するために最善を尽くします。

4

1 に答える 1

0

2 番目のフィードに $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() を急いでいるようです。

于 2013-03-12T02:23:36.043 に答える