php文件缓存主要用来减轻数据库服务器的压力,这里所说的php文件静态缓存是指静态化,直接生成html或xml等文本文件,有更新的时候重生成一次,适合于不太变化的页面。
1.静态文件缓存
2.Memcache、redis缓存
静态缓存:用php把数据组装好,然后把数据写入文件里。
staticcache.php
_dir = dirname(__FILE__).'/files/';//获取文件的当前目录,再放到该目录下的files文件夹中,然后赋给$_dir
}
//把生成/获取/删除缓存这三个操作封装在cacheData方法中
public function cacheData($key,$value = '',$path = ''){
$filename = $this->_dir.$path.$key.self::EXT;//拼装成一个文件:默认目录、路径、文件名、文件名后缀
//将value值写入缓存
if($value !== ''){
//删除缓存
if (is_null($value)){
return @unlink($filename);//unlink删除文件,@忽略警告
}
$dir = dirname($filename);
if(!is_dir($dir)){//如果目录不存在就创建目录,首先要获取这个目录
mkdir($dir,0777);
}
return file_put_contents($filename, json_encode($value));}
//获取缓存
if(!is_file($filename)){
return FALSE;
}else{
return json_decode(file_get_contents($filename),true);
}
}
}test.php
1,
'name' => 'panda',
'number' => array(1,7,8)
);
$file = new File();
//获取缓存
if($file->cacheData('index_cache')){
var_dump($file->cacheData('index_cache'));exit;
echo "success";
}else{
echo "error";
}设置静态缓存时间优化后:
cachetime.php
_dir = dirname(__FILE__).'/files/';//获取文件的当前目录,再放到该目录下的files文件夹中,然后赋给$_dir
}
//把生成/获取/删除缓存这三个操作封装在cacheData方法中
public function cacheData($key,$value = '',$cacheTime = 0){//不传cacheTime永久有效
$filename = $this->_dir.$key.self::EXT;//拼装成一个文件:默认目录、路径、文件名、文件名后缀
//将value值写入缓存
if($value !== ''){
//删除缓存
if (is_null($value)){
return @unlink($filename);//unlink删除文件,@忽略警告
}
$dir = dirname($filename);
if(!is_dir($dir)){//如果目录不存在就创建目录,首先要获取这个目录
mkdir($dir,0777);
}
$cacheTime = sprintf('%011d',$cacheTime)//规定缓存时间格式,不足11位,则前面补0,方便获取时截取
return file_put_contents($filename, $cacheTime.json_encode($value));//缓存时间与数据拼接
}
//获取缓存
if(!is_file($filename)){
return FALSE;
}
$contents = file_get_contents($filename);
$cacheTime = (int)substr($contents,0,11);
$value = substr($contents,11);
if($cacheTime !=0 && ($cacheTime + fileatime($filename)










