1

Linux での SimplePie のキャッシュ機能を理解しようとしています。RSS フィード用に別個の mySql データベースを作成するように指示されることはないので、すべてのキャッシュはローカルで行われると推測しています。(/httpdocs/ ディレクトリに?)

インポート後にSimplePieが記事をどのように保存するかを理解できません...(Linuxの指示でデフォルトのインストールを使用)、およびこれらの記事がDBに保存される期間。

この問題は主に、こちらのサイトで指定されている単純なページネーション設定を使用した SimplePie に関するものです -

http://simplepie.org/wiki/tutorial/how_to_do_item_paging

しかし問題は、アイテム (記事) が互いに上書きされる前に、一定量のアイテム (記事) しか保持しないということです。

たとえば、ここに基本的な小さな SimplePie ページのセットアップがあります -

http://www.oil-gas-prices.com/

下部では、常に 76 付近で途切れます。 (76 の 1 - 10 を表示)

1000を指定したいのですが、そのあたりで切れるように。

以下の特定の値のいずれかを調整しても、インデックス化/キャッシュされたアイテムの全体量は増加しません。

// Set our paging values
$start = (isset($_GET['start']) && !empty($_GET['start'])) ? $_GET['start'] : 0; // Where do we start?
$length = (isset($_GET['length']) && !empty($_GET['length'])) ? $_GET['length'] : 5; // How many per page?
$max = $feed->get_item_quantity(); // Where do we end?

私の主な優先事項は、他の記事がそれらを上書きすることなく、より多くをキャッシュに保存することです。これにより、保存されるアイテムの数が減ります。

LinuxにSimplePieの最新バージョンがインストールされています。ワードプレスの拡張機能などはありません。

助けていただければ幸いです。最近では、正当な SimplePie ヘルプを見つけるのは非常に困難です。

4

1 に答える 1

2

キャッシュされた記事はデフォルトで /cache ディレクトリに保存されますが、ドキュメントには次のように記載されています。デフォルトのキャッシュ期間は 1 時間です。set_cache_durationただし、関数を使用してオーバーライドできます。キャッシュ フォルダーのアクセス許可が少なくとも 755 に設定されていることを確認してください。775 または 777 に増やす必要がある場合があります (ただし、可能であればこれは避けてください)。

アイテム数の制限についてですが、フィードの最大数を設定していますか、それともフィードあたりの最大アイテム数を設定していますか? 私の実装では、フィードごとに 25 と 3 に制限しましたが、うまく機能します。デフォルトの最大値があるかどうかはわかりませんが、存在する可能性があり、手動で上書きする必要がある場合があります。たとえば、私のサイトには次の PHP コードがあります。

$max_items_total = 25;     // This sets the maximum number of blogroll items to display
$max_items_per_feed = 3;   // this sets the maximum number of items from each feed to display

$feed = new SimplePie();
$feed->set_feed_url($feed_ary);

// limit the number of items
$feed->set_item_limit($max_items_per_feed);
$feed->enable_cache(true);  // on by default, but I want to be sure
$feed->set_cache_duration(86400);  // set cache duration to 24 hours

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

for ループは、項目 1 から 25 を取得します。ページネーションにも同様の方法を使用できます。

キャッシングにも問題があります。また、他の人からの情報をいただければ幸いです。

于 2013-05-01T22:02:58.377 に答える