我正在構建一個從不同站點讀取RSS提要的Web應用程序。在每個Feed上,我都可以在網址中添加搜索關鍵字,因此Feed總是不同的。PHP閱讀實時RSS提要,最快的方式
現在我正在使用simplexml_load_file,但這需要很長時間才能閱讀提要。今天我在stackoverflow上搜索並找到了XMLReader類。這有點快,但還是不夠快。
我的問題,是否有更快的方式來讀取多個始終uniqe rss飼料,所以用戶不必等待那麼久。
我正在構建一個從不同站點讀取RSS提要的Web應用程序。在每個Feed上,我都可以在網址中添加搜索關鍵字,因此Feed總是不同的。PHP閱讀實時RSS提要,最快的方式
現在我正在使用simplexml_load_file,但這需要很長時間才能閱讀提要。今天我在stackoverflow上搜索並找到了XMLReader類。這有點快,但還是不夠快。
我的問題,是否有更快的方式來讀取多個始終uniqe rss飼料,所以用戶不必等待那麼久。
奧凱,我用不同的RSS解析器,如: - 了SimplePie - LastRSS
但最快的方法是使用PHP的XMLReader,因爲你不必讀取整個XML文件。
我認爲你需要做的是不讀取整個RSS源,並解析它,但只得到它的一部分。如果您使用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>';
'file_get_contents'可能是讀取數據的最佳方式,但是隻有閱讀文檔的一部分的建議不是一個好方法。開發人員將如何知道要獲取多少文檔,這樣他纔不會切斷中間的文章,甚至不切斷中間的標籤?然後你得到一個無法正確解析的無效XML文檔。另外,拼寫檢查會傷害嗎? –
是的,它很爛,但我是一個非常簡單的方法去這裏。這就是爲什麼我要說你必須修理破損的飼料。您丟失了一個Feed條目,那又怎麼樣? – PiTheNumber
確定您可以使用fopen/fread並自己分析Feed,但這樣做更有用。 – PiTheNumber
退房simplePie - 庫是非常容易使用,並實現緩存行之有效。
加快感知加載時間可以做的另一件事是加載沒有提要內容的頁面,然後用AJAX管道提要。如果您在加載Feed的內容區域粘貼加載器動畫圖像,並在頁面加載時啓動AJAX請求,則用戶會感覺到您的頁面加載速度更快 - 即使這些Feed採用相同的總數加載時間。另外,不在那裏的用戶可以開始做他們需要做的事情,而不用等待他們不關心的內容。
謝謝,但這個讀者不是PHP 5的準備:(我看它真的很快! – Flappy
simplePie only需要PHP 4.3 - http://simplepie.org/wiki/setup/requirements –
爲什麼不緩存5或6個供稿文件,這些文件可以在有用戶請求時隨機包含。這樣用戶最終不會等待Feed的處理。緩存的文件可以每10分鐘或15分鐘刷新一次cron作業,這樣總會有新的內容。
不可能,因爲該Feed中的搜索詞總是不同的。 – Flappy
關鍵字:並行化 – salathe