为什么要有缓存:减少数据库服务器压力。
一.静态缓存:
保存在服务器磁盘的静态文件,用php生成数据放在静态文件中
php操作缓存:
1.生成缓存
2.获取缓存
testfile.php
根据file类,如果value为空='',读取缓存数据,
如果value为null,删除缓存数据,
如果value不为空,也不是null,那么创建缓存数据
一.静态缓存:
保存在服务器磁盘的静态文件,用php生成数据放在静态文件中
php操作缓存:
1.生成缓存
2.获取缓存
3.删除缓存
生成缓存文件:
file.php操作静态缓存的类
<?php
class File {//操作静态缓存的业务
private $_dir;
const EXT = '.txt';
public function __construct() {
//获取文件当前目录,把缓存文件放到当前目录files下
$this->_dir = dirname(__FILE__) . '/files/';
}
//key是缓存文件文件名,value是缓存数据
public function cacheData($key, $value = '', $path='') {
$filename = $this->_dir . $path . $key . self::EXT;
if($value !== '') { // 将value值写入缓存
//获取目录,判断如果目录不存在,创建目录
$dir = dirname($filename);
if(!is_dir($dir)) {
mkdir($dir, 0777);//生成目录,给出权限
}
//第一个参数文件名,第二个数据(String),把数组vlaue转换成字符串
return file_put_contents($filename,json_encode($value));
}
}
}
testfile.php
<?php
require_once('./file.php');
$data=array(
'id'=>1,
'name'=>'david',
'type'=>array(4,5,6)
);
$file=new File();
if($file->cacheData('davidcache',$data)){
echo "success";}else{
echo "error";
}
如果生成成功显示success
这样就在当前文件的目录的file目录下创建了名为davidchche.txt的缓存文件。
进阶版:同时也实现缓存的读和删除
file.php
<?php
class File {//操作静态缓存的业务
private $_dir;
const EXT = '.txt';
public function __construct() {
//获取文件当前目录,把缓存文件放到当前目录files下
$this->_dir = dirname(__FILE__) . '/files/';
}
//key是缓存文件文件名,value是缓存数据
public function cacheData($key, $value = '', $path='') {
$filename = $this->_dir . $path . $key . self::EXT;
if($value !== '') { // 将value值写入缓存
if(is_null($value)) {//如果value值穿null则删除这个缓存文件
return @unlink($filename);
}
//获取目录,判断如果目录不存在,创建目录
$dir = dirname($filename);
if(!is_dir($dir)) {
mkdir($dir, 0777);//生成目录,给出权限
}
//第一个参数文件名,第二个数据(String),把数组vlaue转换成字符串
return file_put_contents($filename,json_encode($value));
}
if(!is_file($filename))//读取缓存文件
{
return FALSE;
}else{
return json_decode(file_get_contents($filename),true);
}
}
}
根据file类,如果value为空='',读取缓存数据,
如果value为null,删除缓存数据,
如果value不为空,也不是null,那么创建缓存数据
testfile.php
<?php
require_once('./file.php');
$data=array(
'id'=>1,
'name'=>'david',
'type'=>array(4,5,6)
);
$file=new File();
//删除缓存文件
if($file->cacheData('davidcache',null)){
//if($file->cacheData('davidcache')){
//var_dump($file->cacheData('davidcache'));
//exit;
echo "success";}else{
echo "error";
}
/*下面这个是读取缓存时使用的
if($file->cacheData('davidcache')){
var_dump($file->cacheData('davidcache'));
exit;
echo "success";}else{
echo "error";
}*/
/*下面这个是创建缓存调用的
if($file->cacheData('davidcache',$data)){
echo "success";}else{
echo "error";
}*/
//根据file类,如果value为空='',读取缓存数据,
//如果value为null,删除缓存数据,
//如果value不为空,也不是null,那么创建缓存数据