首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中检查10,000个博客提要的有效方法

在Perl中检查10,000个博客提要的有效方法
EN

Stack Overflow用户
提问于 2010-12-13 07:28:35
回答 4查看 423关注 0票数 1

我们有10000多个博客,我们想要每天多次查看新帖子。我想要一些关于使用Perl的最有效方法的示例代码的想法。

目前,我们只是使用LWP::UserAgent下载每个RSS,然后根据已找到的URL的MySQL数据库表一次一个地检查结果提要中的每个URL。不用说,这不是很好的伸缩性,而且效率非常低。

提前感谢您的帮助和建议!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-13 07:47:55

不幸的是,除了进行某种轮询之外,可能没有其他方法。

幸运的是,实现PubSubHubbub protocol可以极大地减少支持它的提要的轮询次数。

对于那些不支持PubSubHubbub的提要,您必须确保使用HTTP级协议(比如ETagsIf-Modified-Since标头,以了解资源是否/何时更新)。还要确保你实现了某种回退机制。

票数 3
EN

Stack Overflow用户

发布于 2010-12-13 09:04:59

也许看看AnyEvent::Feed,它是异步的(使用AnyEvent事件循环),具有可配置的轮询间隔,以及内置的对“seen”文章的支持,以及对RSS和Atom feed的支持。您可以创建一个轮询每个提要的进程,也可以创建多个轮询提要列表不同部分的进程。

内容提要如下:

代码语言:javascript
复制
      use AnyEvent;
      use AnyEvent::Feed;

      my $feed_reader =
         AnyEvent::Feed->new (
            url      => 'http://example.com/atom.xml',
            interval => $seconds,

            on_fetch => sub {
               my ($feed_reader, $new_entries, $feed, $error) = @_;

               if (defined $error) {
                  warn "ERROR: $error\n";
                  return;
               }
               for (@$new_entries) {
                     my ($hash, $entry) = @_;
                     # $hash a unique hash describing the $entry
                     # $entry is the XML::Feed::Entry object of the new entries
                     # since the last fetch.
               }

            }
         );
票数 2
EN

Stack Overflow用户

发布于 2010-12-13 18:28:16

似乎有两个问题合而为一:获取比较。其他人已经回答了fetch部分。至于比较:

  • 我最近一直在读关于redis的文章,它似乎很适合你,因为它每秒可以做很多简单的操作(比方说大约80k /s)。所以检查你是否已经有了一个url应该会很快。
  • 有一个想法:在解析RSS之前,你有没有尝试过比较大小?如果更改不频繁,可能会为您节省一些时间。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4424727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档