下一篇 »« 上一篇提示:鼠标放在图片上用鼠标中键即可控制图片大小

文章标题:php的缓存类

作者:    时间:2008-04-07    翻译网站:    点击:31447    本文共1篇文章
发表评论 | 查看评论 | 加入收藏 | Email给朋友 | 打印本文 | 字体:[ ]
标签:php缓存

PHP代码
  1. <?php   
  2. /*  
  3. *    FileName                :    cache.inc.php  
  4. *    Link                    :   [url]http://blog.csdn.net/dxflingxing/[/url]  
  5. *    Author                    :   dxflingxing  
  6. *    Date                    :    2006-5-9  
  7. *    Last Modified            :    2006-5-16  
  8. *    Version                    :    1.0.1  
  9. *    Description                :    Cache a page in file formart  
  10. *    Notice                    :    Make sure you cache file dir can be readed and wrote  
  11. *  
  12. *    Thanks to                :    小邪,barryonline(寒)  
  13. ************************************************************  
  14. *  
  15. *    Usage                    :  
  16. *        # Cache active time half an hour  
  17. *        # This Can Auotmatic make some none exist dirs  
  18. *        # Or you can use an cache file in curent dir  
  19. *        # The Usage Such as   
  20. *        # $cache    = new cache(string cache_name,int seconds);  
  21. *  
  22. *        require ('cache.inc.php');  
  23. *        $cache    = new cache('dir1/dir2/cache_name.htm',60*30);      
  24. *  
  25. *        $cache->start();  
  26. *  
  27. *        # Your Page Contents With print  
  28. *        phpinfo();  
  29. *  
  30. *        $cache->_end();  
  31. *  
  32. */  
  33.     
  34. class cache {   
  35.     var $_file;   
  36.     var $cache_time;   
  37.     
  38.     function cache($_file='_index.htm',$cache_time=1) {   
  39.         $this->_file        = $_file;   
  40.         $this->cache_time    = $cache_time;   
  41.     }   
  42.     
  43.     /*  
  44.     * Start cache method without Return  
  45.     */  
  46.     function start() {   
  47.          
  48.         if($this->cache_is_active()) {   
  49.             include($this->_file);   
  50.             exit;   
  51.             }   
  52.           ob_start();   
  53.     }   
  54.     
  55.     /*  
  56.     * End of cache method without Return  
  57.     */  
  58.     function _end() {   
  59.         $this->make_cache();   
  60.         ob_end_flush();   
  61.     }   
  62.     
  63.     /*  
  64.     * Check if cache file is actived  
  65.     * Return true/false  
  66.     */  
  67.     function cache_is_active() {   
  68.         if ($this->cache_is_exist()) {   
  69.             if (time() - $this->lastModified() < $this->cache_time)   
  70.                 Return true;   
  71.             else {   
  72.                 Return false;   
  73.             }    
  74.         }   
  75.         else {   
  76.             Return false;   
  77.         }    
  78.     }   
  79.     
  80.     /*  
  81.     * Create cache file  
  82.     * Return true/false  
  83.     */  
  84.     function make_cache() {   
  85.         $content    = $this->get_cache_content();   
  86.         if($this->write_file($content)) {   
  87.             Return true;   
  88.         }   
  89.         else {   
  90.             Return false;   
  91.         }   
  92.     }   
  93.     
  94.     /*  
  95.     * Check if cache file is exists  
  96.     * Return true/false  
  97.     */  
  98.     function cache_is_exist() {   
  99.         if(file_exists($this->_file)) {   
  100.             Return true;   
  101.         }   
  102.         else {   
  103.             Return false;   
  104.         }   
  105.     }   
  106.     
  107.     /*  
  108.     * Return last Modified time in bollin formart  
  109.     * Usage: $lastmodified = $this->lastModified();  
  110.     */  
  111.     function lastModified() {   
  112.         Return @filemtime($this->_file);   
  113.     }   
  114.     
  115.     /*  
  116.     * Return Content of Page  
  117.     * Usage: $content = $this->get_cache_content();  
  118.     */  
  119.     function get_cache_content() {   
  120.         $contents = ob_get_contents();   
  121. //        Return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;   
  122.         Return $contents;   
  123.     }   
  124.     
  125.     /*Write content to $this->_file   
  126.     * Return true/false  
  127.     * Usage: $this->write_file($content);  
  128.     **/  
  129.     function write_file($content,$mode='w+')   
  130.     {   
  131.         $this->mk_dir($this->_file);   
  132.         if (!$fp = @fopen($this->_file,$mode)) {   
  133.             $this->report_Error($this->_file." 目录或者文件属性无法写入.");   
  134.             Return false;   
  135.         } else{   
  136.             @fwrite($fp,$content);   
  137.             @fclose($fp);   
  138.             @umask($oldmask);   
  139.             Return true;   
  140.         }   
  141.     }   
  142.     
  143.     /*  
  144.     * Make given dir included in $this->_file  
  145.     * Without Return  
  146.     * Usage: $this->mk_dir();  
  147.     */  
  148.     function mk_dir()   
  149.     {    //$this->_file    = str_replace('','/');   
  150.         $dir    = @explode("/"$this->_file);   
  151.         $num    = @count($dir)-1;   
  152.         $tmp    = './';   
  153.         for($i=0; $i<$num$i++){   
  154.             $tmp    .= $dir[$i];   
  155.             if(!file_exists($tmp)){   
  156.                 @mkdir($tmp);   
  157.                 @chmod($tmp, 0777);   
  158.             }   
  159.             $tmp    .= '/';   
  160.         }   
  161.     }   
  162.     
  163.     /*  
  164.     * Unlink an exists cache  
  165.     * Return true/false  
  166.     * Usage: $this->clear_cache();  
  167.     */  
  168.     function clear_cache() {   
  169.         if (!@unlink($this->_file)) {   
  170.             $this->report_Error('Unable to remove cache');   
  171.             Return false;   
  172.         }   
  173.         else {   
  174.             Return true;   
  175.         }   
  176.     }   
  177.     
  178.     /*  
  179.     * Report Error Messages  
  180.     * Usage: $this->report_Error($message);  
  181.     */  
  182.     function report_Error($message=NULL) {   
  183.         if($message!=NULL) {   
  184.             trigger_error($message);       
  185.         }   
  186.     }   
  187. }   
  188. ?>   
责任编辑:semirock
发表评论
密码: (游客不需要密码)
记住我【Alt+S 或 Ctrl+Enter 快速提交】