多菜鸟的PHP缓存类
<?php 
/* 
* 缓存类 cache 
* 作     者:多菜鸟 
* 联系邮箱:kingerq AT msn DOT com 
* 创建时间:2006-05-05 
* 实     例: 
include( "cache.php" ); 
     
$cache = new cache(30); 
$cache->cacheCheck(); 
     
echo date("Y-m-d H:i:s"); 
     
$cache->caching(); 
*/ 
class cache 
     
//缓存目录 
     
var $cacheRoot             "./cache/"
     
//缓存更新时间秒数,0为不缓存 
     
var $cacheLimitTime     0
     
//缓存文件名 
     
var $cacheFileName     ""
     
//缓存扩展名 
     
var $cacheFileExt         "php"
     
     
/* 
     * 构造函数 
     * int $cacheLimitTime 缓存更新时间 
     */ 
     
function cache$cacheLimitTime ) { 
     if( 
intval$cacheLimitTime ) )     
         
$this->cacheLimitTime $cacheLimitTime
     
$this->cacheFileName $this->getCacheFileName(); 
     
ob_start(); 
     } 
     
     
/* 
     * 检查缓存文件是否在设置更新时间之内 
     * 返回:如果在更新时间之内则返回文件内容,反之则返回失败 
     */ 
     
function cacheCheck(){ 
     if( 
file_exists$this->cacheFileName ) ) { 
         
$cTime $this->getFileCreateTime$this->cacheFileName ); 
         if( 
$cTime $this->cacheLimitTime time() ) { 
             echo 
file_get_contents$this->cacheFileName ); 
             
ob_end_flush(); 
             exit; 
         } 
     } 
     return 
false
     } 
     
     
/* 
     * 缓存文件或者输出静态 
     * string $staticFileName 静态文件名(含相对路径) 
     */ 
     
function caching$staticFileName "" ){ 
     if( 
$this->cacheFileName ) { 
         
$cacheContent ob_get_contents(); 
         
//echo $cacheContent; 
         
ob_end_flush(); 
     
         if( 
$staticFileName ) { 
             
$this->saveFile$staticFileName$cacheContent ); 
         } 
     
         if( 
$this->cacheLimitTime 
             
$this->saveFile$this->cacheFileName$cacheContent ); 
     } 
     } 
     
     
/* 
     * 清除缓存文件 
     * string $fileName 指定文件名(含函数)或者all(全部) 
     * 返回:清除成功返回true,反之返回false 
     */ 
     
function clearCache$fileName "all" ) { 
     if( 
$fileName != "all" ) { 
         
$fileName $this->cacheRoot strtoupper(md5($fileName)).".".$this->cacheFileExt
         if( 
file_exists$fileName ) ) { 
             return @
unlink$fileName ); 
         }else return 
false
     } 
     if ( 
is_dir$this->cacheRoot ) ) { 
         if ( 
$dir = @opendir$this->cacheRoot ) ) { 
             while ( 
$file = @readdir$dir ) ) { 
             
$check is_dir$file ); 
             if ( !
$check 
             @
unlink$this->cacheRoot $file ); 
             } 
             @
closedir$dir ); 
             return 
true
         }else{ 
             return 
false
         } 
     }else{ 
         return 
false
     } 
     } 
     
     
/* 
     * 根据当前动态文件生成缓存文件名 
     */ 
     
function getCacheFileName() { 
     return     
$this->cacheRoot strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt
     } 
     
     
/* 
     * 缓存文件建立时间 
     * string $fileName     缓存文件名(含相对路径) 
     * 返回:文件生成时间秒数,文件不存在返回0 
     */ 
     
function getFileCreateTime$fileName ) { 
     if( ! 
trim($fileName) ) return 0
     
     if( 
file_exists$fileName ) ) {     
         return 
intval(filemtime$fileName )); 
     }else return 
0
     } 
     
     
/* 
     * 保存文件 
     * string $fileName     文件名(含相对路径) 
     * string $text         文件内容 
     * 返回:成功返回ture,失败返回false 
     */ 
     
function saveFile($fileName$text) { 
     if( ! 
$fileName || ! $text ) return false
     
     if( 
$this->makeDirdirname$fileName ) ) ) { 
         if( 
$fp fopen$fileName"w" ) ) { 
             if( @
fwrite$fp$text ) ) { 
             
fclose($fp); 
             return 
true
             }else { 
             
fclose($fp); 
             return 
false
             } 
         } 
     } 
     return 
false
     } 
     
     
/* 
     * 连续建目录 
     * string $dir 目录字符串 
     * int $mode     权限数字 
     * 返回:顺利创建或者全部已建返回true,其它方式返回false 
     */ 
     
function makeDir$dir$mode "0777" ) { 
     if( ! 
$dir ) return 0
     
$dir str_replace"\\""/"$dir ); 
     
     
$mdir ""
     foreach( 
explode"/"$dir ) as $val ) { 
         
$mdir .= $val."/"
         if( 
$val == ".." || $val == "." || trim$val ) == "" ) continue; 
         
         if( ! 
file_exists$mdir ) ) { 
             if(!@
mkdir$mdir$mode )){ 
             return 
false
             } 
         } 
     } 
     return 
true
     } 

?>
« 上一篇 | 下一篇 »
只显示10条记录相关文章
php header 跳转 (浏览: 451, 评论: 0)
定时清理旧的log文件 (浏览: 1806, 评论: 1)
FIREFOX取动态input值 (浏览: 1158, 评论: 0)
用css方式巧妙保护邮箱地址 (浏览: 1183, 评论: 0)
PHP5_OOP面向对象---教程下载 (浏览: 2299, 评论: 0)
vc++中用ado连接oracle数据库 (浏览: 4173, 评论: 0)
在DISDUZ!5.5中添加代码高亮插件成功 (浏览: 3123, 评论: 1)
xajax+php的一个DEMO--Blackjack(21点) (浏览: 3503, 评论: 3)
关于使用PHP6的感受 (浏览: 2735, 评论: 0)
[PHP AJAX] 简单比较 xajax、AJASON、flxAJAX、Aja... (浏览: 2711, 评论: 0)
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
发表评论

评论内容(*):