PHP以最快的方式阅读live rss feed

时间:2011-11-14 15:58:10

标签: php rss

我正在构建一个网络应用程序,可以从不同的站点读取rss提要。在每个Feed上,我都可以在网址中添加搜索关键字,因此Feed始终不同。

现在我正在使用simplexml_load_file,但这需要很长时间才能阅读Feed。今天我在stackoverflow上搜索并找到了XMLReader类。这有点快,但仍然不够快。

我的问题是,是否有更快的方式来读取多个始终是unqe的RSS源,因此用户不必等待这么久。

4 个答案:

答案 0 :(得分:1)

查看simplePie - 该库非常易于使用,并实现了运行良好的缓存。

为加快感知加载时间,您可以做的另一件事是加载没有Feed内容的页面,然后使用AJAX管理Feed。如果您将加载器动画图像粘贴到Feed所在的内容区域并在页面加载时启动AJAX请求,则用户将感知到您的页面加载速度更快 - 即使Feed使用相同的总量,它也可以更快地使用加载时间。此外,没有供稿的用户可以开始做他们需要做的事情而无需等待他们甚至不关心的内容。

答案 1 :(得分:0)

为什么不在存在用户请求时可以随机包含的文件中缓存5或6个Feed。这样,用户不会等待处理订阅源。可以使用cron作业每10或15分钟刷新一次缓存的文件,因此总是有新鲜的内容。

答案 2 :(得分:0)

Oke,我使用了不同的rss解析器,例如: - SimplePie - LastRSS

但最快的方法是使用PHP XMLReader,因为您不必阅读整个xml文件。

答案 3 :(得分:-1)

我认为您需要做的是阅读整个RSS Feed并解析它,但只获取其中的一部分。如果您使用file_get_contents(),则可以设置限制以不下载整个页面,而只下载第一部分。

当然你的RSS Feed已经破了。我现在不知道你的读者对此有何反应。也许你可以让他忽略它或修复破碎的饲料结束。

你走了:

$feed = file_get_contents('http://stackoverflow.com/...', false, null, -1, 1000);
$end = strpos($feed, '</entry>', -1);
echo substr($feed, 0, $end). '</entry></feed>';