簡體   English   中英

在PHP中解析RSS feed的最快方法是什么?

[英]What is the Fastest Way to parse RSS feed in PHP?

我已經提取了7個RSS feed,並在我們的網站中進行了解析。 但是解析時間非常慢,在PHP中解析RSS feed的最佳方法是什么。

還可以通過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

這是我的PHP代碼,用於解析RSS feed

<?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>';          
    }
}
?>

任何幫助/建議將不勝感激。

似乎您正在根據每個用戶請求在線解析供稿。
總是很慢。 您知道這是網絡。

讀取RSS提要的唯一明智的方法是異步方法 一種腳本可以定期解析它們並更新本地數據庫,另一種腳本可以顯示本地數據庫中的條目。

而且,gzip壓縮輸出與解析入站數據幾乎沒有關系。 去搞清楚。

我不確定Gzip是否會對解析時間產生積極的影響,它將減少下載時間,僅此而已。

您應該考慮使用SAX解析器而不是simplexml:

關於SAX分析器的PHP文檔
一個例子

在大文件上(如果使用得當),SAX解析器比simplexml更快。 sax解析器的內存使用量也較低。

看看這個答案

評論和答案摘要:

  • 確保僅在需要時進行分析,分別檢查更新,並根據頁面請求從本地數據庫提供信息。
  • 確保延遲不是由於遠程服務器的響應緩慢而引起的(同樣,通過緩存可以緩解這種情況)。
  • 除非提要是巨大的,否則任何XML解析器都將做,如果它們是巨大的,那可能是造成延遲的原因...
  • 如前所述,GZip是服務器端的,您可以指定客戶端(您的腳本)接受gzip,例如使用cURL,但是cURL的使用是一個問題,應單獨詢問。 無論如何,它都不會減少解析時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM