您的足迹:首页 > php知识 >php缓存之静态文件缓存

php缓存之静态文件缓存

?
缓存主要用来减轻数据库服务器的压力;
?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)

缓存方式开发首页接口
cacheData('index_yjp_cache'.$page.'-'.$pageSize)){
echo 1;exit;//如果缓存失效输出1
try{
$connect = Db::getInstance()->connect();
}catch(Exception $e){
return Response::show(403,'数据库链接失败');
}
$result = mysql_query($sql,$connect);
$videos = array();
while ($video = mysql_fetch_assoc($result)){
$videos[] = $video;
}
if($videos){
$cache->cacheData('index_yjp_cache'.$page.'-'.$pageSize,$videos,1200);
}
}
if($videos){
return Response::show(200,'首页数据获取成功',$videos);
}else{
return Response::show(400,'失败',$videos);
}

注:文件缓存注意文件的过期时间
1.获取文件创建时间示例:
$ctime=filectime("chinawinxp.txt");
echo "创建时间:".date("Y-m-d H:i:s",$ctime);
2.获取文件修改时间示例:
$mtime=filemtime("chinawinxp.txt");
echo "修改时间:".date("Y-m-d H:i:s",$mtime);
fileatime() 函数返回指定文件的上次访问时间

2.memcache和redis缓存
开启服务;连接端口,缓存服务器;php操作php操作redis、mencache条件:
1) 安装phpredis扩展/mencache扩展
2) php连接redis服务 connet(127.0.0.1,6379);
? 连接mencache服务 connet('memcache_host',11211);
3) set 设置缓存
4) get 获取缓存
设置缓存时间:set key time(时间) value

相关推荐

网友评论(0)