php文件缓存类文件
本人给大家推一个不错php文件缓存类文件,从各方面来看本缓存类很合理并且适用于大型网站使用,php文件缓存类文件代码如下:
<?php class Cache { /** 缓存目录 **/ var $CacheDir = './c' ; /** 缓存的文件 **/ var $CacheFile = '' ; /** 文件缓存时间(分钟) **/ var $CacheTime = 0; /** 文件是否已缓存 **/ var $CacheFound = False; /** 错误及调试信息 **/ var $DebugMsg = NULL; function Cache( $CacheTime = 0) { $this ->CacheTime = $CacheTime ; } private function Run() { /** 缓存时间大于0,检测缓存文件的修改时间,在缓存时间内为缓存文件名,超过缓存时间为False, 小于等于0,返回false,并清理已缓存的文件 **/ Return $this ->CacheTime ? $this ->CheckCacheFile() : $this ->CleanCacheFile(); } function GetCache( $VistUrl , $CacheFileType = 'html' ) { $this ->SetCacheFile( $VistUrl , $CacheFileType ); $fileName = $this ->CheckCacheFile(); if ( $fileName ) { $fp = fopen ( $fileName , "r" ); $content_ = fread ( $fp , filesize ( $fileName )); fclose( $fp ); return $content_ ; } else { return false; } } private function SetCacheFile( $VistUrl , $CacheFileType = 'html' ) { if ( empty empty ( $VistUrl )) { /** 默认为index.html **/ $this ->CacheFile = 'index' ; } else { /** 传递参数为$_POST时 **/ $this ->CacheFile = is_array ( $VistUrl ) ? implode( '.' , $VistUrl ) : $VistUrl ; } $this ->CacheFile = $this ->CacheDir. '/' .md5( $this ->CacheFile); $this ->CacheFile.= '.' . $CacheFileType ; } function SetCacheTime( $t = 60) { $this ->CacheTime = $t ; } private function CheckCacheFile() { if (! $this ->CacheTime || ! file_exists ( $this ->CacheFile)) {Return False;} /** 比较文件的建立/修改日期和当前日期的时间差 **/ $GetTime =(Time()- Filemtime ( $this ->CacheFile))/(60*1); /** Filemtime函数有缓存,注意清理 **/ Clearstatcache(); $this ->Debug( 'Time Limit ' .( $GetTime *60). '/' .( $this ->CacheTime*60). '' ); $this ->CacheFound = $GetTime <= $this ->CacheTime ? $this ->CacheFile : False; Return $this ->CacheFound; } function SaveToCacheFile( $VistUrl , $Content , $CacheFileType = 'html' ) { $this ->SetCacheFile( $VistUrl , $CacheFileType ); if (! $this ->CacheTime) { Return False; } /** 检测缓存目录是否存在 **/ if (true === $this ->CheckCacheDir()) { $CacheFile = $this ->CacheFile; $CacheFile = str_replace ( '//' , '/' , $CacheFile ); $fp = @ fopen ( $CacheFile , "wb" ); if (! $fp ) { $this ->Debug( 'Open File ' . $CacheFile . ' Fail' ); } else { if (@!fwrite( $fp , $Content )){ $this ->Debug( 'Write ' . $CacheFile . ' Fail' ); } else { $this ->Debug( 'Cached File' ); }; @fclose( $fp ); } } else { /** 缓存目录不存在,或不能建立目录 **/ $this ->Debug( 'Cache Folder ' . $this ->CacheDir. ' Not Found' ); } } private function CheckCacheDir() { if ( file_exists ( $this ->CacheDir)) { Return true; } /** 保存当前工作目录 **/ $Location = getcwd (); /** 把路径划分成单个目录 **/ $Dir = split( "/" , $this ->CacheDir); /** 循环建立目录 **/ $CatchErr = True; for ( $i =0; $i < count ( $Dir ); $i ++){ if (! file_exists ( $Dir [ $i ])){ /** 建立目录失败会返回False 返回建立最后一个目录的返回值 **/ $CatchErr = @ mkdir ( $Dir [ $i ],0777); } @ chdir ( $Dir [ $i ]); } /** 建立完成后要切换到原目录 **/ chdir ( $Location ); if (! $CatchErr ) { $this ->Debug( 'Create Folder ' . $this ->CacheDir. ' Fail' ); } Return $CatchErr ; } private function CleanCacheFile() { if ( file_exists ( $this ->CacheFile)) { @ chmod ( $this ->CacheFile,777); @unlink( $this ->CacheFile); } /** 置没有缓存文件 **/ $this ->CacheFound = False; Return $this ->CacheFound; } function Debug( $msg = '' ) { if (DEBUG) { $this ->DebugMsg[] = '[Cache]' . $msg ; } } function GetError() { Return empty empty ( $this ->DebugMsg) ? '' : "<br>n" .implode( "<br>n" , $this ->DebugMsg); //开源代码phpfensi测试数据 } } /* end of class */ ?>查看更多关于php文件缓存类文件 - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29515