cron工作周期和工作量

时间:2011-07-25 13:50:06

标签: php rss cron load-balancing

我正在开展博客聚合项目。 其中一个主要任务是获取博客的RSS源并处理它们。我目前有大约500个博客,但这个数字会随着时间的推移而稳步增长(很快就会达到数千个)。

目前(仍然是测试版),我有一个cron作业,它每天定期提取所有RSS提要一次。但这会使所有处理和网络IO每天只进行一次。

我应该:

  1. 保持现状(一次性全部)
  2. 每小时获取number_of_blogs / 24(常数cron作业时间)
  3. 更改cron周期以获取固定数量的RSS提取(每个较小时间显示10个博客)
  4. 还是有其他想法?

    我在共享主机上,因此非常感谢减少CPU和网络IO:)

3 个答案:

答案 0 :(得分:2)

我使用了一个系统来调整Feed的更新频率,如this answer中所述。

如果您使用条件HTTP GET来检索支持它的源,则可以节省资源。保留HTTP响应中 Last-Modified ETag 标头的值。在下一次尝试时,在 If-Modified-Since If-None-Match 请求标头中提供它们的值。

现在,如果您收到HTTP 304响应代码,则表示Feed未更改。在这种情况下,还没有再次发送完整的Feed,只有标题告诉您没有新帖子。这减少了带宽和数据处理。

答案 1 :(得分:1)

我有类似的情况,但没有那么多的博客:)我曾经在24小时内导入一次但为了节省CPU负载,我在每个博客之后使用sleep(),如sleep(10);它让我安全。

答案 2 :(得分:1)

我会考虑使用Google App Engine来检索和处理“原始”信息,并将其以可管理大小的数据包发布到Web服务器。 GAE有自己的cron作业系统,可以24/7独立运行。

目前正在使用类似的系统从多个网站检索作业信息,并将其编译为另一个,这是一种很好的方式来抵消带宽和带宽。处理要求也是如此。