核心提示:为什么要有缓存:减少数据库服务器压力。一.静态缓存:保存在服务器磁盘的静态文件,用php生成数据放在静态文件中php操作缓存:1.生成缓存2.获取缓存3.删除缓存生成缓存文件:file.php操作静态...
为什么要有缓存:减少数据库服务器压力。一.静态缓存:
保存在服务器磁盘的静态文件,用php生成数据放在静态文件中
php操作缓存:
1.生成缓存
2.获取缓存
3.删除缓存
生成缓存文件:
file.php操作静态缓存的类
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!--?php class File { //操作静态缓存的业务 private $_dir; const EXT = &# 39 ;.txt&# 39 ;; 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
?
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--?php require_once(&# 39 ;./file.php&# 39 ;); $data=array( &# 39 ;id&# 39 ;=--> 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
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<!--?php class File { //操作静态缓存的业务 private $_dir; const EXT = &# 39 ;.txt&# 39 ;; 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
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<!--?php require_once(&# 39 ;./file.php&# 39 ;); $data=array( &# 39 ;id&# 39 ;=--> 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,那么创建缓存数据 |