我正在尋找一種解決方案來緩存PHP中的RSS提要。我打算用Magpie RSS解析器(http://magpierss.sourceforge.net/)進行解析。但是,那麼我怎樣才能緩存提要(有時候提要提供商不會讓我閱讀相同的提要等)?PHP RSS緩存
問候。
我正在尋找一種解決方案來緩存PHP中的RSS提要。我打算用Magpie RSS解析器(http://magpierss.sourceforge.net/)進行解析。但是,那麼我怎樣才能緩存提要(有時候提要提供商不會讓我閱讀相同的提要等)?PHP RSS緩存
問候。
瞧緩存。
您也可以執行條件GET,以避免在Feed沒有更改的情況下再次傳送Feed。 – Artefacto 2010-08-11 23:07:20
提取飼料列表說,每小時使用wget。
將它們寫入名爲/ cache的文件夾中
重複。
罰款,只要這會工作的)每小時是不夠好B)每小時是所有飼料不夠好,和c)你有機會與cron
總得知道你爲什麼被獲取和服務的飼料,除非你他們正在對它們進行一些後期分析。
不喜鵲內置緩存?爲什麼不使用它?我個人使用SimplePie。這裏是文檔的緩存了SimplePie:
http://simplepie.org/wiki/faq/how_does_simplepie_s_caching_http_conditional_get_system_work
我想知道我爲什麼被拒絕? :-( – 2010-08-20 12:57:08
+1,你不應該被低估,我發現這有幫助。 – 2013-04-03 02:34:51
@Byron惠特洛克 好吧,我是在做〜同樣的事情。但我決定不使用MagPie。相反,我使用rss2html.php,它基於我提供的HTML模板從RSS獲取HTML生成代碼。當我說include(「rss2html.php」)時,它會生成HTML。所以不是緩存RSS,而是緩存已經生成的HTML。這是我非常簡單的代碼塊:
<?php
$hashfromURL = hash("md5",$url);
$cachefile = "cache/rss/".$hashfromURL.".html";
$cachetime = 5*60; //5 minuta TODO:Pri deployment-u povecati na sat-dva.
//Serviraj is kesha ako je mladji od $cachetime
if(file_exists($cachefile) && (time() - filemtime($cachefile) < $cachetime))
{
include($cachefile);
echo "RSS ucitan iz kesha!";
}
else{//Ucitaj RSS ponovo
$XMLfilename = $url;
//Pocni dump buffera
ob_start();
include("rss2html.php");//HTML parsiran sadrzaj RSS-a
//Otvori kesh fajl za pisanje
$fp = fopen($cachefile, 'w');
//Sacuvaj sadrzaj izlaznog buffer-a u fajl
fwrite($fp, ob_get_contents());
//zatvori fajl
fclose($fp);
//Posalji izlaz na browser
ob_end_flush();
echo "RSS osvjezen - feed ponovo ucitan!";
}
?>
MagpieRSS有一個內置緩存,緩存檢索到的文件1小時。有關可以使用的設置,請參閱rss_fetch.inc。 – Kwebble 2010-08-12 12:09:05