我已经在我们的网站上提取了7个RSS源并进行了解析。但解析时间非常慢,在PHP中解析RSS提要的最佳方法是什么。
还有一种方法可以让GZip获得更快的解析时间吗?
我在.htaccess文件中使用此GZip但没有区别
这是我的.htaccess文件中的GZip脚本
# compress text, html, javascript, css, xml: AddOutputFilterByType
DEFLATE text/plain text/html text/xml text/css application/xml
application/xhtml+xml application/rss+xml application/javascript
application/x-javascript
这是我解析RSS提要的PHP代码
<?php
function getFeed($feed_url){
$content = file_get_contents($feed_url);
$x = new SimpleXMLElement($content);
for ($i=0; $i<=4; $i++){
$entry = $x->channel->item[$i];
// if promotion price is set, then use the promotion price instead of Normal Price
$normal = $entry->NormalPrice;
$promo = $entry->PromotionPrice;
// Get the links and titles
$image = $entry->Image->Url;
$link = $entry->link;
$title = $entry->title;
if((isset($promo)) && ($promo > 0)){
$price = 'R '.number_format(trim($promo), 2);
}else if($normal > 0 && $promo == 0){
$price = 'R '.number_format(trim($normal), 2);
}else if((empty($normal) && empty($promo)) || (($normal == 0) && ($promo == 0))){
$price = 'Out Of Stock';
}
echo '<div class="rssImages">';
echo '<div class="imageCover">';
echo '<a href="'.$link.'"><img src="'.$image.'" /></a><br /><br />';
echo '</div>';
echo '<div class="rssCntImg">';
echo '<a href="'.$link.'" id="rsslinks">'.$title.'</a> <br />';
echo '</div>';
echo '<strong>'.$price."</strong>";
echo '<label class="cleared"></label>';
echo '</div>';
}
}
?>
任何帮助/建议都将不胜感激。
答案 0 :(得分:3)
您似乎正在每个用户请求上在线解析您的Feed 它总是很慢。你知道,这是网络。
阅读RSS源的唯一合理方法是异步。一个脚本定期解析它们并更新本地数据库,另一个脚本显示来自本地数据库的条目。
而且,您知道,gzipping 输出与解析入站数据几乎没有关系。去图。
答案 1 :(得分:1)
我不确定Gzip是否会对解析时间产生积极影响,它会减少下载时间,但这就是全部。
您应该考虑使用SAX解析器而不是simplexml:
Php Doc about SAX Parser
An example
SAX解析器比大文件上的simplexml快(如果使用得当)。 sax解析器使用的内存也较低。
查看此answer
答案 2 :(得分:0)
评论和答案摘要: