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[email protected]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[email protected]fopen($file,'w');
if ([email protected]fputs($fp,$output))
{
echo "模板Cache写入失败";
exit;
}
@fclose($fp);
//如果设置了缓存更新间隔时间 _ReCacheTime_
if (_ReCacheTime_+0>0)
{
//更新当前页Cache的最后更新时间
$file=_CachePath_."/".$this->cachefilevar;
$fp[email protected]fopen($file,'w');
if ([email protected]fwrite($fp,time()))
{
echo "Cache目录无法写入";
exit;
}
@fclose($fp);
}
//$this->spendTime();//结果记录第一次缓存内容所用的时间
}
}
} //end the cache Class
?>
/**********************************************************
用法:
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[email protected]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[email protected]fopen($file,'w');
if ([email protected]fputs($fp,$output))
{
echo "模板Cache写入失败";
exit;
}
@fclose($fp);
//如果设置了缓存更新间隔时间 _ReCacheTime_
if (_ReCacheTime_+0>0)
{
//更新当前页Cache的最后更新时间
$file=_CachePath_."/".$this->cachefilevar;
$fp[email protected]fopen($file,'w');
if ([email protected]fwrite($fp,time()))
{
echo "Cache目录无法写入";
exit;
}
@fclose($fp);
}
//$this->spendTime();//结果记录第一次缓存内容所用的时间
}
}
} //end the cache Class
?>
Tags: