【问题标题】:SimplePie Pagination / CacheSimplePie 分页/缓存
【发布时间】:2013-04-01 03:58:00
【问题描述】:

我正在尝试了解 SimplePie 在 Linux 上的缓存功能。它从来没有告诉我们为 RSS 提要创建一个单独的 mySql 数据库,所以我猜所有的缓存都是在本地完成的。 (在 /httpdocs/ 目录中?)

我无法弄清楚 SimplePie 在导入后如何存储它的文章...(使用 linux 上的默认安装说明)以及这些文章在数据库中存储了多长时间。

这个问题主要是关于 SimplePie 的简单分页设置,如其网站上指定的那样 -

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

但问题是,在它们相互覆盖之前,它只保留一定数量的项目(文章)。

例如,我在这里设置了一个基本的 SimplePie 小页面 -

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

在底部,它总是在 76 左右切断。(显示 1 - 10 of 76)

我想指定一个 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。没有 wordpress 扩展或任何东西。

我非常感谢任何帮助。这些天很难找到合法的 SimplePie 帮助,

【问题讨论】:

  • 有人...拜托?我似乎无法在任何地方获得有关 SimplePie 的帮助..

标签: php simplepie


【解决方案1】:

默认情况下,它将缓存的文章存储在 /cache 目录中,尽管其文档指出:“SimplePie 包含一个缓存系统,可与基于文件的缓存、数据库缓存或 Memcache 支持的缓存系统一起使用。”。默认缓存持续时间为一小时。但是,您可以使用 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。您可以使用类似的方法进行分页。

我也遇到了缓存问题,希望其他人提供更多信息。

【讨论】:

  • Revent,感谢您试一试。我完全按照你的做法设置了我的……除了底线。我的那边看起来像 - <?php // get_items() will accept values from above. foreach($feed->get_items($start, $length) as $item): $feed = $item->get_feed(); ?>
  • Revent,你有没有增加过分页项目的总量?我仍然不成功。对我来说,这个数字仍然只有 75。有人说我们需要创建一个 mysql 数据库才能使其正常工作。我很惊讶您能够找到 SimplePie 也支持数据库执行的文档...但是没有显示如何完成它的示例?如果有人可以帮助我完成需要做的事情,我几乎愿意提供有偿支持。我的电子邮件是 mikepa5486@gmail.com - 我非常感谢任何帮助。
  • @user2103549 - 不幸的是,我自己对 SimplePie 还是很陌生。我还没有尝试过分页或其他缓存方法。社区中肯定还有其他人,尽管他有...
猜你喜欢
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2020-03-08
相关资源
最近更新 更多