开发者社区> 航空母舰> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

2PHP页面缓存

简介:
+关注继续查看
Java代码  收藏代码
  1. <?php  
  2. /* 
  3. * 缓存类 cache 
  4. * 作    者:多菜鸟 
  5. * 联系邮箱:kingerq AT msn DOT com 
  6. * 创建时间:2006-05-05 
  7. * 实    例: 
  8. include( "cache.php" ); 
  9.   
  10. $cache = new cache(30); 
  11. $cache->cacheCheck(); 
  12.  
  13. echo date("Y-m-d H:i:s"); 
  14.  
  15. //$cache->clearCache('mv_moves.php'); 
  16. $cache->caching(); 
  17. */  
  18. class cache {  
  19.   //缓存目录  
  20.   var $cacheRoot        = "./cache/";  
  21.   //缓存更新时间秒数,0为不缓存  
  22.   var $cacheLimitTime   = 0;  
  23.   //缓存文件名  
  24.   var $cacheFileName    = "";  
  25.   //缓存扩展名  
  26.   var $cacheFileExt     = "php";  
  27.    
  28.   /* 
  29.    * 构造函数 
  30.    * int $cacheLimitTime 缓存更新时间 
  31.    */  
  32.   function cache( $cacheLimitTime ) {  
  33.     if( intval( $cacheLimitTime ) )  
  34.       $this->cacheLimitTime = $cacheLimitTime;  
  35.     $this->cacheFileName = $this->getCacheFileName();  
  36.     ob_start();  
  37.   }  
  38.    
  39.   /* 
  40.    * 检查缓存文件是否在设置更新时间之内 
  41.    * 返回:如果在更新时间之内则返回文件内容,反之则返回失败 
  42.    */  
  43.   function cacheCheck(){  
  44.     if( file_exists( $this->cacheFileName ) ) {  
  45.       $cTime = $this->getFileCreateTime( $this->cacheFileName );  
  46.       if( $cTime + $this->cacheLimitTime > time() ) {  
  47.         echo file_get_contents( $this->cacheFileName );  
  48.         ob_end_flush();  
  49.         exit;  
  50.       }  
  51.     }  
  52.     return false;  
  53.   }  
  54.    
  55.   /* 
  56.    * 缓存文件或者输出静态 
  57.    * string $staticFileName 静态文件名(含相对路径) 
  58.    */  
  59.   function caching( $staticFileName = "" ){  
  60.     if( $this->cacheFileName ) {  
  61.       $cacheContent = ob_get_contents();  
  62.       //echo $cacheContent;  
  63.       ob_end_flush();  
  64.    
  65.       if( $staticFileName ) {  
  66.           $this->saveFile( $staticFileName, $cacheContent );  
  67.       }  
  68.    
  69.       if( $this->cacheLimitTime )  
  70.         $this->saveFile( $this->cacheFileName, $cacheContent );  
  71.     }  
  72.   }  
  73.    
  74.   /* 
  75.    * 清除缓存文件 
  76.    * string $fileName 指定文件名(含函数)或者all(全部) 
  77.    * 返回:清除成功返回true,反之返回false 
  78.    */  
  79.   function clearCache( $fileName = "all" ) {  
  80.     if( $fileName != "all" ) {  
  81.       $fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;  
  82.       if( file_exists( $fileName ) ) {  
  83.         return @unlink( $fileName );  
  84.       }else return false;  
  85.     }  
  86.     if ( is_dir( $this->cacheRoot ) ) {  
  87.       if ( $dir = @opendir( $this->cacheRoot ) ) {  
  88.         while ( $file = @readdir( $dir ) ) {  
  89.           $check = is_dir( $file );  
  90.           if ( !$check )  
  91.           @unlink( $this->cacheRoot . $file );  
  92.         }  
  93.         @closedir( $dir );  
  94.         return true;  
  95.       }else{  
  96.         return false;  
  97.       }  
  98.     }else{  
  99.       return false;  
  100.     }  
  101.   }  
  102.    
  103.   /* 
  104.    * 根据当前动态文件生成缓存文件名 
  105.    */  
  106.   function getCacheFileName() {  
  107.     return  $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;  
  108.   }  
  109.    
  110.   /* 
  111.    * 缓存文件建立时间 
  112.    * string $fileName   缓存文件名(含相对路径) 
  113.    * 返回:文件生成时间秒数,文件不存在返回0 
  114.    */  
  115.   function getFileCreateTime( $fileName ) {  
  116.     if( ! trim($fileName) ) return 0;  
  117.    
  118.     if( file_exists( $fileName ) ) {  
  119.       return intval(filemtime( $fileName ));  
  120.     }else return 0;  
  121.   }  
  122.    
  123.   /* 
  124.    * 保存文件 
  125.    * string $fileName  文件名(含相对路径) 
  126.    * string $text      文件内容 
  127.    * 返回:成功返回ture,失败返回false 
  128.    */  
  129.   function saveFile($fileName, $text) {  
  130.     if( ! $fileName || ! $text ) return false;  
  131.    
  132.     if( $this->makeDir( dirname( $fileName ) ) ) {  
  133.       if( $fp = fopen( $fileName, "w" ) ) {  
  134.         if@fwrite( $fp, $text ) ) {  
  135.           fclose($fp);  
  136.           return true;  
  137.         }else {  
  138.           fclose($fp);  
  139.           return false;  
  140.         }  
  141.       }  
  142.     }  
  143.     return false;  
  144.   }  
  145.    
  146.   /* 
  147.    * 连续建目录 
  148.    * string $dir 目录字符串 
  149.    * int $mode   权限数字 
  150.    * 返回:顺利创建或者全部已建返回true,其它方式返回false 
  151.    */  
  152.   function makeDir( $dir, $mode = "0777" ) {  
  153.     if( ! $dir ) return 0;  
  154.     $dir = str_replace( "\\", "/", $dir );  
  155.       
  156.     $mdir = "";  
  157.     foreach( explode( "/", $dir ) as $val ) {  
  158.       $mdir .= $val."/";  
  159.       if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;  
  160.         
  161.       if( ! file_exists( $mdir ) ) {  
  162.         if(!@mkdir( $mdir, $mode )){  
  163.          return false;  
  164.         }  
  165.       }  
  166.     }  
  167.     return true;  
  168.   }  
  169. }  
  170. ?>  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
centos下 Apache、php、mysql默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html 如果采用源代码安装,一般默认安装在/usr/local/apache2目录下 php: 如果采用RPM包安装,安装路
3018 0
+关注
514
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载