网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个。废话不多说,直接看代码吧!
使用说明:
1、实例化
$cache = new Cache();
2、设置缓存时间和缓存目录
$cache = new Cache(60, '/any_other_path/');
第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/
3、读取缓存
$value = $cache->get('data_key');
4、写入缓存
$value = $cache->put('data_key', 'data_value');
完整实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$cache = new Cache();
//从缓存从读取键值 $key 的数据
$values = $cache ->get( $key );
//如果没有缓存数据
if ( $values == false) {
//insert code here...
//写入键值 $key 的数据
$cache ->put( $key , $values );
} else {
//insert code here...
}
|
Cache.class.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
37
38
39
40
41
42
43
44
45
46
47
|
<?php
class Cache {
private $cache_path ; //path for the cache
private $cache_expire ; //seconds that the cache expires
//cache constructor, optional expiring time and cache path
public function Cache( $exp_time =3600, $path = "cache/" ){
$this ->cache_expire= $exp_time ;
$this ->cache_path= $path ;
}
//returns the filename for the cache
private function fileName( $key ){
return $this ->cache_path.md5( $key );
}
//creates new cache files with the given data, $key== name of the cache, data the info/values to store
public function put( $key , $data ){
$values = serialize( $data );
$filename = $this ->fileName( $key );
$file = fopen ( $filename , 'w' );
if ( $file ){ //able to create the file
fwrite( $file , $values );
fclose( $file );
}
else return false;
}
//returns cache for the given key
public function get( $key ){
$filename = $this ->fileName( $key );
if (! file_exists ( $filename ) || ! is_readable ( $filename )){ //can't read the cache
return false;
}
if ( time() < ( filemtime ( $filename ) + $this ->cache_expire) ) { //cache for the key not expired
$file = fopen ( $filename , "r" ); // read data file
if ( $file ){ //able to open the file
$data = fread ( $file , filesize ( $filename ));
fclose( $file );
return unserialize( $data ); //return the values
}
else return false;
}
else return false; //was expired you need to create new
}
}
?>
|
相信大家一定会喜欢这个简洁的php缓存类代码,希望对大家的学习有所帮助。