首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有PHP的多个RSS提要(性能)

带有PHP的多个RSS提要(性能)
EN

Stack Overflow用户
提问于 2010-08-13 08:26:42
回答 4查看 1K关注 0票数 1

在我最近的项目中,我使用多个rss提要。我只想列出他们所有的最新帖子,并按时间戳对它们进行排序。

我的问题是,我有大约20个不同的提要,页面需要6秒来加载(仅用10个提要进行测试)。

我该怎么做才能使从更好的中获益?

我使用simplexml:

代码语言:javascript
复制
simplexml_load_file($url);

我将其附加到数组中:

代码语言:javascript
复制
function appendToArray($key, $value){
$this->array[$key] = $value;
}

就在我展示它之前,我做了一个krsort:

代码语言:javascript
复制
krsort($this->array);

我应该把它藏起来吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-13 08:35:16

你做过任何调试吗?在代码中的各个点记录microtime

您会发现,需要花费时间来加载RSS提要,而不是解析它,但您可能会发现,这是由于每个RSS提要生成所需的时间。

将这10个提要保存为静态xml文件,将脚本指向它们并查看加载速度。

票数 0
EN

Stack Overflow用户

发布于 2010-08-13 08:41:29

您可以缓存它们,但是如果缓存已经过期,页面仍然会需要很长时间才能加载。

您可以拥有一个在后台运行的PHP脚本(例如,通过cron作业),并定期将订阅的提要下载到数据库中,然后当您想要显示数据时,可以对数据进行更快的抓取/筛选。

票数 2
EN

Stack Overflow用户

发布于 2010-08-13 08:59:51

您可以与多点并行加载RSS提要。这可以加快您的脚本,特别是当您正在使用阻塞调用的时候。

一个小例子(来自主管/):

代码语言:javascript
复制
$nodes = array('http://www.google.com', 'http://www.microsoft.com', 'http://www.rustyrazorblade.com');
$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < $node_count; $i++)
{
    $url =$nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do {
    curl_multi_exec($master,$running);
} while($running > 0);

echo "results: ";
for($i = 0; $i < $node_count; $i++)
{
    $results = curl_multi_getcontent  ( $curl_arr[$i]  );
    echo( $i . "\n" . $results . "\n");
}
echo 'done';

更多的信息可以在卷曲多()无阻塞 (以及其他网站)上找到。

顺便说一下,要在使用curl_multi加载提要之后处理它们,您当然必须使用字符串而不是simplexml_load_file。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3475134

复制
相关文章

相似问题

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