php缓存变量_以文件形式缓存php变量的方法

/*

$cache_set = array(

//缓存路径 , 最后要加"/"

'cacheRoot'=>'./cache/',

//缓存时间

'cacheTime'=>20,

//cache type

'cacheType'=>1,

//扩展名

'cacheExe'=>'.php'

);

$cache = new Cache($cache_set);

$a=array('1','2');

$a="aaa";

$b='';

if($cache->cache_is("d")){

$c=$cache->cache_read("d");

echo "c";

print_r($c);

}else {

$b=$cache->cache_data('d',$a);

}

print_r($b);

//$cache->clear("a");

//echo $cache->cache_read("./cache/d.php");

//echo $d;

*/

/**

* 数据缓存类 v1.0

* @author shooke

* 2009-11-13 16:02:26

* 用于缓存数据,如变量,但不能缓存页面

*/

classCache{

//配置

public$config=array(

//缓存路径

'cacheRoot'=>'./cache/',

//缓存时间

'cacheTime'=>1,

//cache 类型 1串化数据 2变量

'cacheType'=>2,

//扩展名

'cacheExe'=>'.php'

//转换中间变量

);

public$return_name=array();

function__construct($cache_set=array())

{

if(!empty($cache_set))$this->config=array_merge($this->config,$cache_set);

$this->config['ClassName'] =__CLASS__;

}

publicfunctionclear($filename=''){

if(file_exists($this->cache_file($filename))) {

@unlink($this->cache_file($filename));

}elseif(empty($filename)){

$this->clear_dir($this->config['cacheRoot']);

}else{

$this->clear_dir($this->config['cacheRoot'].$filename);

echo$this->config['cacheRoot'].$filename;

}

}

//循环删除路径

privatefunctionclear_dir($dir,$to= false)

{

if($list=glob($dir.'/*'))

{

foreach($listas$file)

{

is_dir($file) ?$this->clear_dir($file) : unlink($file);

}

}

if($to=== false)rmdir($dir);

}

//写入缓存

privatefunctioncache_write($filename,$writetext,$openmod='w'){

if(!file_exists($filename)) {

@$this->makeDir( dirname($filename));

}

if(@$fp=fopen($filename,$openmod)) {

flock($fp, 2);

fwrite($fp,$writetext);

fclose($fp);

returntrue;

} else{

echo"File: $filename write error.";

returnfalse;

}

}

//缓存有效期 有效返回 true

publicfunctioncache_is($fileName){

$fileName=$this->cache_file($fileName);

if(file_exists($fileName) ) {

//如果缓存时间为负数则永不过期

if($this->config['cacheTime'] 

returntrue;

}

//如果缓存时间为0则一直过期

if($this->config['cacheTime'] == 0) {

returnfalse;

}

//获取缓存文件的建立时间

$ctime=intval(filemtime($fileName));

//比较是否大于缓存时间,是则过期 否则不过期

if(time() -$ctime>$this->config['cacheTime']) {

returnfalse;

}else{

returntrue;

}

//文件不存在视为过期失效

}else{

returnfalse;

}

}

publicfunctioncache_data($name,$data){

$varname=$name;

$name=$this->cache_file($name);

//config['cacheTime']==0也就是不启用缓存是直接返回数据

if($this->config['cacheTime'] <> 0) {

if($this->config['cacheType']==1){

$write_data="<?php  exit;?>".serialize($data);

//return $data;

}else{

$write_data="<?php \\r\\n\\$var= ";

$write_data.= var_export($data,true);

$write_data.=";\\r\\n?>";

}

$this->cache_write($name,$write_data);

}

return$data;

}

//缓存文件名

privatefunctioncache_file($filename){

return$this->config['cacheRoot'].$filename.$this->config['cacheExe'];

}

//读取文件

publicfunctioncache_read($file){

$file=$this->cache_file($file);

if(!file_exists($file)) {

return'';

}

if($this->config['cacheType']==1){

if(function_exists('file_get_contents')){

$cache_Content=file_get_contents($file);

}else{

$fopen=fopen($file,'r');

$cache_Content='';

do{

$data=fread($fopen,filesize($file));

if(strlen($data)===0)break;

$cache_Content.=$data;

}while(1);

fclose($fopen);

}

$cache_Content=substr($cache_Content,13);/* 去除<?phpexit ;?> */

$cache_Content= unserialize($cache_Content);

return$cache_Content;

}else{

include_once($file);

return$var;

}

}

//循环创建目录

privatefunctionmakeDir($dir,$mode= 0777 ) {

if( !$dir)return0;

$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)){

returnfalse;

}

}

}

returntrue;

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值