我们有10000多个博客,我们想要每天多次查看新帖子。我想要一些关于使用Perl的最有效方法的示例代码的想法。
目前,我们只是使用LWP::UserAgent下载每个RSS,然后根据已找到的URL的MySQL数据库表一次一个地检查结果提要中的每个URL。不用说,这不是很好的伸缩性,而且效率非常低。
提前感谢您的帮助和建议!
发布于 2010-12-13 07:47:55
不幸的是,除了进行某种轮询之外,可能没有其他方法。
幸运的是,实现PubSubHubbub protocol可以极大地减少支持它的提要的轮询次数。
对于那些不支持PubSubHubbub的提要,您必须确保使用HTTP级协议(比如ETags或If-Modified-Since标头,以了解资源是否/何时更新)。还要确保你实现了某种回退机制。
发布于 2010-12-13 09:04:59
也许看看AnyEvent::Feed,它是异步的(使用AnyEvent事件循环),具有可配置的轮询间隔,以及内置的对“seen”文章的支持,以及对RSS和Atom feed的支持。您可以创建一个轮询每个提要的进程,也可以创建多个轮询提要列表不同部分的进程。
内容提要如下:
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.
}
}
);发布于 2010-12-13 18:28:16
似乎有两个问题合而为一:获取比较。其他人已经回答了fetch部分。至于比较:
https://stackoverflow.com/questions/4424727
复制相似问题