PHP阅读实时rss提要,最快的方式

PHP阅读实时rss提要,最快的方式,php,rss,Php,Rss,我正在构建一个web应用程序,从不同的站点读取rss提要。在每个提要上,我都可以在url中添加一个搜索键,因此提要总是不同的 现在我使用的是simplexml_load_文件,但读取提要需要很长时间。今天我搜索了stackoverflow,找到了XMLReader类。这稍微快一点,但仍然不够快 我的问题是,有没有一种更快的方法来读取多个始终是uniqe的rss提要,这样用户就不必等待太久。我认为您需要做的是,不要读取整个rss提要并对其进行解析,而是只获取其中的一部分。如果使用()可以设置一个限

我正在构建一个web应用程序,从不同的站点读取rss提要。在每个提要上,我都可以在url中添加一个搜索键,因此提要总是不同的

现在我使用的是simplexml_load_文件,但读取提要需要很长时间。今天我搜索了stackoverflow,找到了XMLReader类。这稍微快一点,但仍然不够快


我的问题是,有没有一种更快的方法来读取多个始终是uniqe的rss提要,这样用户就不必等待太久。

我认为您需要做的是,不要读取整个rss提要并对其进行解析,而是只获取其中的一部分。如果使用()可以设置一个限制,不下载整个页面,而只下载第一部分

当然,你的RSS源是坏的。我现在不知道你的读者对此有何反应。也许你可以让他忽略它或修复损坏的饲料结束

给你:

$feed = file_get_contents('http://stackoverflow.com/...', false, null, -1, 1000);
$end = strpos($feed, '</entry>', -1);
echo substr($feed, 0, $end). '</entry></feed>';
$feed=file\u get\u contents('http://stackoverflow.com/...,false,null,-11000);
$end=strpos($feed,,-1);
echo substr($feed,0,$end)。“”;
签出-该库非常易于使用,并实现了运行良好的缓存


另一种加速感知加载时间的方法是加载没有提要内容的页面,然后使用AJAX导入提要。如果您将加载程序动画图像粘贴在提要将要加载的内容区域,并在页面加载时启动AJAX请求,用户将感觉到您的页面加载得更快—它将更快可用,即使提要加载所需的总时间相同。另外,没有订阅源的用户可以开始做他们需要做的事情,而无需等待他们甚至不关心的内容。

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

ok,我使用了不同的rss解析器,如: -单纯形 -最后的


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

file\u get\u contents
可能是读取数据的最佳方法,但是您建议只读取文档的一部分不是一个好方法。开发人员如何知道要取多少文件,这样他就不会在中间剪掉文章,甚至在中间剪掉标签?然后您得到了一个无法正确解析的无效XML文档。还有,拼写检查会不会痛?是的,它很糟糕,但我在这里很容易。这就是为什么我说你必须修复损坏的饲料。你丢失了一个feed条目,那又怎样?当然你可以使用fopen/fread自己解析feed,但这需要更多的工作。你怎么知道你“丢失了一个feed条目”?如果您只是在
文件获取内容
处抛出一些任意的
max\u len
参数,您不知道将获得什么。可能是最后一篇文章,可能是第一篇文章的三分之一。你也不会有简单的方法来“修复损坏的提要”,因为你不知道你切了什么。与检索整个提要相比,您将花费更多的执行时间来尝试找出需要“修复”和有效处理的XML碎片。你最好一开始就不要打破它-谢谢你的更正!修复损坏的XML非常容易。只需搜索最后一个条目的结尾和剩余的部分(见上文)。这是不可能的,因为提要的url中有一个搜索词总是不同的。谢谢,但是这个读者还没有准备好PHP 5:(我看到它真的很快!