php cache()类,对一个cache类的实际应用_php

Class_Cache.php:

class cache

{

http://www.gaodaima.com/46817.html对一个cache类的实际应用_php

var $cacheDirectory;

var $cacheDuration=3600;

var $cacheFilename;

function cache($cacheDuration=3600,$cacheDirectory='./cache')

{

$this->cacheDuration = 0;

$this->cacheDirectory = '.';

$this->cacheFilename = '';

$this->updateCache($cacheDuration,$cacheDirectory);

}

function getCacheFilename()

{

return $this->cacheFilename;

}

function updateCache($cacheDuration=3600,$cacheFolder='./cache')

{

$this->cacheDuration = $cacheDuration;

$this->cacheDirectory = $cacheFolder;

$this->_makeCacheFolder();

}

function _makeCacheFolder()

{

/*if (!is_dir($this->cacheDirectory))

{

$temp = explode('/',$this->cacheDirectory);

$cur_dir = '';

for($i=0;$i

{

$cur_dir .= $temp[$i].'/';

if (!is_dir($cur_dir))

{

if (@mkdir($cur_dir,777)&&($cur_dir!=getcwd()))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

}*/

if (!is_dir($this->cacheDirectory))

{

$cur_dir=$this->cacheDirectory;

//echo $cur_dir;

if (@mkdir($cur_dir,777))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

function _writeFile($filename,$contents)

{

if (!file_exists($filename))

{

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}else{

unlink($filename);

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

}

function _setCacheFilename($contents)

{

//$this->cacheFilename = $this->cacheDirectory.'/'.md5($contents).'.txt';

/***********/

global $cache_file;

$this->cacheFilename = $this->cacheDirectory.'/'.$cache_file.'.txt';

/***********/

}

function returnCacheTime()

{

//return "asdfd";

$tim=filemtime($this->cacheFilename);

return date('Y年m月d日 H时i分s秒',$tim);

}

function inCache($contents,$sty='')

{

$this->_setCacheFilename($contents);

if($sty==1)

{

return file_exists($this->cacheFilename);

}else{

if(file_exists($this->cacheFilename))

{

$tim=filemtime($this->cacheFilename);

if((time()-$tim)>$this->cacheDuration)

{

return false;

}else{

return true;

}

}else{

return false;

}

}

}

function readCache()

{

$contents = '';

$fp = @fopen($this->cacheFilename,'r');

if ($fp)

{

while(!feof($fp))

$contents .= fread($fp,4096);

fclose($fp);

}

return $contents;

}

function saveInCache($contents,$filename='')

{

if (trim($filename)=='') $filename = $contents;

if ($this->inCache($filename,1))

{

if((time()-filemtime($this->cacheFilename))>$this->cacheDuration)

{

@unlink($this->cacheFilename);

}

}

$this->_writeFile($this->cacheFilename,$contents);

}

}

?>

cache.php:

require_once("Class_Cache.php");?>

//---------页面缓存----------

$is_cache=1;//是否缓存

$cache_time=300;//缓存时间

if ((strstr($script_name,"/member/") == true) || (strstr($script_name,"/common/") == true))

$is_cache=0;

$cacheDirectory=$_SERVER['DOCUMENT_ROOT']."/cache/";

if($_SERVER['QUERY_STRING']=='')

$cache_file=$_SERVER['PHP_SELF'];

else

$cache_file=$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];

if($_SERVER['PHP_SELF']=="/index.php")

$cache_file="___index.php";

$cache_file=preg_replace(array("","//?/"),array("",""),$cache_file);

//echo $cache_file;

if($is_cache==1)

{

$cache=new cache($cache_time,$cacheDirectory);

if($cache->incache($cache_file))

{

$output=$cache->readcache();

$CacheTime=$cache->returnCacheTime();

unset($cache);

//if( function_exists(return_execute_time()) )

$execute_time=return_execute_time();

$output=str_replace("",$execute_time."
缓存版本:".$CacheTime,$output);

print($output);

exit;

}else

ob_start();

}

function all_cache()

{

global $is_cache;

global $cache_file;

global $cache;

if($is_cache==1)

{

//这里是输出的内容

$output = ob_get_clean();

ob_end_clean();

$cache->saveInCache($output,$cache_file);

$CacheTime=$cache->returnCacheTime();

unset($cache);

//if( function_exists(return_execute_time()) )

$execute_time=return_execute_time();

$output=str_replace("",$execute_time."
缓存版本:".$CacheTime,$output);

print($output);

//exit;

}

}

?>

用法

在页面开头引用

require("cache.php")?>

在页面最后加上

all_cache();?>

实际应用http://www.scmetals.com

class_cache类 原贴:http://www.phpx.com/happy/thr83014.html

class_cache.php内容如下

class cache

{

var $cacheDirectory;

var $cacheDuration=3600;

var $cacheFilename;

function cache($cacheDuration=3600,$cacheDirectory='./cache')

{

$this->cacheDuration = 0;

$this->cacheFilename = '';

$this->cacheDirectory = '.';

$this->updateCache($cacheDuration,$cacheDirectory);

}

function _makeCacheFolder()

{

if (!is_dir($this->cacheDirectory))

{

$temp = explode('/',$this->cacheDirectory);

$cur_dir = '';

for($i=0;$i

{

$cur_dir .= $temp[$i].'/';

if (!is_dir($cur_dir))

{

if (@mkdir($cur_dir,777)&&($cur_dir!=getcwd()))

{

$this->_writeFile($cur_dir.'.htaccess','Deny from all');

$this->_writeFile($cur_dir.'index.html','');

}

}

}

}

}

function getCacheFilename()

{

return $this->cacheFilename;

}

function _setCacheFilename($contents)

{

$this->cacheFilename = $this->cacheDirectory.'/'.md5($contents).'.txt';

}

function inCache($contents,$sty='')

{

$this->_setCacheFilename($contents);

if($sty==1)

{

return file_exists($this->cacheFilename);

}

else

{

if(file_exists($this->cacheFilename))

{

$tim=filemtime($this->cacheFilename);

if((time()-$tim)>$this->cacheDuration)

{

return false;

}

else

{

return true;

}

}

else

{

return false;

}

}

}

function readCache()

{

$contents = '';

$fp = @fopen($this->cacheFilename,'r');

if ($fp)

{

while(!feof($fp)) $contents .= fread($fp,4096);

fclose($fp);

}

return $contents;

}

function updateCache($cacheDuration=3600,$cacheFolder='./cache')

{

$this->cacheDuration = $cacheDuration;

$this->cacheDirectory = $cacheFolder;

$this->_makeCacheFolder();

}

function saveInCache($contents,$filename='')

{

if (trim($filename)=='') $filename = $contents;

if ($this->inCache($filename,1))

{

if((time()-filemtime($this->cacheFilename))>$this->cacheDuration)

{

@unlink($this->cacheFilename);

}

}

$this->_writeFile($this->cacheFilename,$contents);

}

function _writeFile($filename,$contents)

{

if (!file_exists($filename))

{

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

else

{

unlink($filename);

$fp = @fopen($filename,'w');

if ($fp)

{

fputs($fp,$contents);

fclose($fp);

}

}

}

}

?>

欢迎大家阅读《对一个cache类的实际应用_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值