关于我们┊AboutMe

昵称:Hopol(■童■)

联系:QQ:18883

邮箱:info(at)18883.com

主页:www.18883.com

手机浏览 日志归档 RSS 2.0 订阅
Register | Login

Jaycn的PHP缓存类

<?php
/**********************************************************
用法:
include "./config/connect.php";     //变量都在里面设置了
$cache=new Cache();
$cache->startToCacheFile()     //自动处理缓存是否开启以及缓存是否存在,进行相应的处理
.......
页面内容
.......
$cache->saveToCacheFile();
**********************************************************/
    
/*********************************************************************
*用户需要事先定义的常量:已经在../config/config.php定义
*_CachePath_             模板缓存路径
*_CacheEnable_             自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制
*_ReCacheTime_             自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存
*********************************************************************/
    
class Cache
{
    
var 
$cachefile;
var 
$cachefilevar;
var 
$startTime;
    
/*********************************************************************
*生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile
*动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同
*********************************************************************/
function Cache() 
{
     
$s=array(".","/");$r=array("_","");
     
$this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];
     
$this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);
}
    
/*开始时间
function startTimer() 
     { 
         $mtime = microtime (); 
         $mtime = explode (' ', $mtime); 
         $mtime = $mtime[1] + $mtime[0]; 
         $this->startTime = $mtime; 
     }     
     //结束时间
function endTimer() 
     { 
         $mtime = microtime (); 
         $mtime = explode (' ', $mtime); 
         $mtime = $mtime[1] + $mtime[0]; 
         $endtime = $mtime; 
         $totaltime = round (($endtime - $this->startTime), 10); //单位秒
         return $totaltime; 
     } 
//缓存所用的时间
function spendTime()
     {
     return $this->endTimer()*1000;     //单位毫秒
     }
     */
     
//删除当前页/模块的缓存
function cleanCacheFile() 
{
     
//删除当前页的缓存
     
$d dir(_CachePath_);
     
$strlen=strlen($this->cachefilevar);
     
//返回当前页的所有Cache文件组
     
while (false !== ($entry $d->read())) 
     {
         if (
substr($entry,0,$strlen)==$this->cachefilevar
         {
             if (!
unlink(_CachePath_."/".$entry)) 
         {
             echo 
"Cache目录无法写入";
             exit;
             }
             }
         }
     }
    
//判断是否已Cache过,以及是否需要Cache
function checkCacheFile()
{
     
//如果设置了缓存更新间隔时间 _ReCacheTime_
     
if (_ReCacheTime_+0>0)         
     {
         
//返回当前页Cache的最后更新时间
         
$var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];
             
//如果更新时间超出更新间隔时间则删除Cache文件
             
if (time()-$var>_ReCacheTime_
         {
                 
$this->cleanCacheFile();
         
$ischage=true;
             }
         }
         
//返回当前页的Cache
         
$file=_CachePath_."/".$this->cachefile;
     
//判断当前页Cache是否存在 且 Cache功能是否开启
     
return (file_exists($file) and _CacheEnable_ and !$ischange);
}
    
//读取Cache
function echoCache()
{
     
//返回当前页的Cache
     
$file=_CachePath_."/".$this->cachefile;
     
//读取Cache文件的内容
     
if (_CacheEnable_
     return 
readfile($file);
         else 
             return 
false;
     }
    
//开始缓存
function startToCacheFile()
     {
     if (
$this->checkCacheFile())
     {
         
//$this->startTimer(); //开始记录直接输出缓存内容所用的时间
         
$this->echoCache();
     
//echo $this->spendTime();//结果记录直接输出缓存内容所用的时间
     
exit;
         }
             else 
             { 
             
//$this->startTimer(); //开始记录第一次缓存内容所用的时间
                 
ob_clean();
                 
ob_start();
                 
ob_implicit_flush(0);
         }
     }
    
    
//生成Cache
function saveToCacheFile()

     
//取得当前页面的内容
     
$output ob_get_contents();
     
//返回当前页的Cache
     
$file=_CachePath_."/".$this->cachefile;
     
//如果Cache功能开启
     
if (_CacheEnable_
     {
             
//把输出的内容写入Cache文件
             
$fp=@fopen($file,'w');
             if (!@
fputs($fp,$output)) 
         {
             echo 
"模板Cache写入失败";
         exit;
         }
             @
fclose($fp);
             
//如果设置了缓存更新间隔时间 _ReCacheTime_
             
if (_ReCacheTime_+0>0
             {
                 
//更新当前页Cache的最后更新时间
                 
$file=_CachePath_."/".$this->cachefilevar;
                 
$fp=@fopen($file,'w');
                 if (!@
fwrite($fp,time())) 
             {
                 echo 
"Cache目录无法写入";
                 exit;
             }
                 @
fclose($fp);
             }
     
//$this->spendTime();//结果记录第一次缓存内容所用的时间     
         
}
     }
    
//end the cache Class 
?>

Tags: php, 缓存,

« 上一篇 | 下一篇 »

只显示10条记录相关文章

dede5.1 UTF8商业版 (浏览: 231, 评论: 1)
dede5.1 BGK商业版 (浏览: 256, 评论: 0)
MyPic图片管理系统 (浏览: 162, 评论: 0)
PHP 美女写真 Cms (浏览: 208, 评论: 0)
Google translator API ( PHP 5 class ) (浏览: 193, 评论: 0)
MyPic v1.0 (MyPic图片管理系统) (浏览: 289, 评论: 0)
PHP在图片上写上中文[备份] (浏览: 205, 评论: 0)
DEDECMS 模板收藏 【极限资讯网】 (浏览: 496, 评论: 0)
DEDECMS 模板收藏 【CK女性站】 (浏览: 494, 评论: 0)
DEDECMS 模板收藏 【淡蓝色完整风格V1.1】 (浏览: 501, 评论: 0)

发表评论