PHP RSS缓存
我正在寻找一种在PHP中缓存RSS提要的解决方案。我计划用Magpie RSS解析器进行解析。但是,我如何才能缓存提要(以防有时候提要提供者不让我读取相同的提要,等等) 问候。PHP RSS缓存,php,caching,rss,Php,Caching,Rss,我正在寻找一种在PHP中缓存RSS提要的解决方案。我计划用Magpie RSS解析器进行解析。但是,我如何才能缓存提要(以防有时候提要提供者不让我读取相同的提要,等等) 问候。 你去拿饲料。将结果保存到数据库或文件(serialize()) 当再次获取提要时 检查文件是否存在,如果不存在,请创建并更新 如果文件存在,请检查数据库或文件的时间戳 如果它早于阈值(比如20秒SM),则重新蚀刻,否则只返回缓存的提要 如果出于任何原因无法获取提要,则返回缓存的版本,直到超时(例如20分钟) 瞧,缓存。
- 你去拿饲料。将结果保存到数据库或文件(serialize())
- 当再次获取提要时
- 检查文件是否存在,如果不存在,请创建并更新
- 如果文件存在,请检查数据库或文件的时间戳
- 如果它早于阈值(比如20秒SM),则重新蚀刻,否则只返回缓存的提要李>
- 如果出于任何原因无法获取提要,则返回缓存的版本,直到超时(例如20分钟)
瞧,缓存。使用wget每隔一小时获取一个提要列表 将它们写入名为/cache的文件夹中 重复一遍 只要a)hourly足够好b)hourly足够好用于所有提要,c)您可以访问cron,这就可以了
我想知道你为什么要获取和提供提要,除非你对它们进行一些获取后分析。喜鹊没有内置缓存吗?为什么不用呢?我个人使用SimplePie。以下是SimplePie缓存的文档: @Byron Whitlock 好的,我也在做同样的事情。但我决定不使用喜鹊。相反,我使用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!";
}
?>
您还可以执行条件GET,以避免在提要未更改的情况下再次传输该提要。MagpieRSS具有内置缓存,可将检索到的文件缓存1小时。有关可以使用的设置,请参阅rss_fetch.inc。