首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP RSS缓存

PHP RSS缓存
EN

Stack Overflow用户
提问于 2010-08-12 06:34:33
回答 4查看 2.7K关注 0票数 3

我正在寻找一个在PHP中缓存RSS提要的解决方案。我计划使用Magpie解析器( (http://magpierss.sourceforge.net/)进行解析。但是,我该如何缓存提要(以防有时候提要提供者不让我阅读相同的提要,等等)?

致以问候。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-12 06:41:15

  • 您获取提要。将结果保存到数据库或文件(serialize()).
  • When是时候再次获取提要,
  • 检查文件是否存在,如果不是创建和更新
  • 如果文件存在,请检查数据库或文件的时间戳。
  • 如果时间戳早于您的阈值(例如20秒20),则重新获取,否则只返回缓存的提要。
  • 如果由于某种原因无法获取提要,则返回超时时间(比如20分钟)的缓存版本

瞧,缓存。

票数 4
EN

Stack Overflow用户

发布于 2010-08-12 06:55:04

使用wget获取提要列表,比如每小时获取一次。

将它们写入名为/cache的文件夹中

重复一遍。

只要a)每小时足够好,b)每小时对所有提要足够好,以及c)您可以访问cron,就可以很好地工作。

我想知道为什么你要获取和提供提要,除非你正在对它们进行一些获取后的分析。

票数 2
EN

Stack Overflow用户

发布于 2010-08-13 15:27:31

@Byron Whitlock好的,我也在做同样的事情.但我决定不使用MagPie。相反,我使用rss2html.php,它根据我提供的超文本标记语言模板,从我获取的RSS生成超文本标记语言代码。当我说include("rss2html.php")时,它会生成超文本标记语言。所以我没有缓存RSS,而是缓存了这个已经生成的HTML。这是我非常简单的代码块:

代码语言:javascript
复制
<?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!";
            }

    ?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3463383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档