PHP RSS缓存

PHP RSS缓存,php,caching,rss,Php,Caching,Rss,我正在寻找一种在PHP中缓存RSS提要的解决方案。我计划用Magpie RSS解析器进行解析。但是,我如何才能缓存提要(以防有时候提要提供者不让我读取相同的提要,等等) 问候。 你去拿饲料。将结果保存到数据库或文件(serialize()) 当再次获取提要时 检查文件是否存在,如果不存在,请创建并更新 如果文件存在,请检查数据库或文件的时间戳 如果它早于阈值(比如20秒SM),则重新蚀刻,否则只返回缓存的提要 如果出于任何原因无法获取提要,则返回缓存的版本,直到超时(例如20分钟) 瞧,缓存。

我正在寻找一种在PHP中缓存RSS提要的解决方案。我计划用Magpie RSS解析器进行解析。但是,我如何才能缓存提要(以防有时候提要提供者不让我读取相同的提要,等等)

问候。

  • 你去拿饲料。将结果保存到数据库或文件(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。