本文实例讲述了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
48
49
50
51
52
53
54
55
56
57
|
<?php /** * 简单的文件缓存类 * */ class XZCache{ // default cache time one hour var $cache_time = 3600; // default cache dir var $cache_dir = './cache' ; public function __construct( $cache_dir =null, $cache_time =null){ $this ->cache_dir = isset( $cache_dir ) ? $cache_dir : $this ->cache_dir; $this ->cache_time = isset( $cache_time ) ? $cache_time : $this ->cache_time; } public function saveCache ( $key , $value ){ if ( is_dir ( $this ->cache_dir)){ $cache_file = $this ->cache_dir . '/xzcache_' . md5( $key ); $timedif = @(time() - filemtime ( $cache_file )); if ( $timedif >= $this ->cache_time) { // cached file is too old, create new $serialized = serialize( $value ); if ( $f = @ fopen ( $cache_file , 'w' )) { fwrite ( $f , $serialized , strlen ( $serialized )); fclose( $f ); } } $result = 1; } else { echo "Error:dir is not exist." ; $result = 0; } return $result ; } /** * @return array * 0 no cache * 1 cached * 2 overdue */ public function getCache ( $key ) { $cache_file = $this ->cache_dir . '/xzcache_' . md5( $key ); if ( is_dir ( $this ->cache_dir) && is_file ( $cache_file )) { $timedif = @(time() - filemtime ( $cache_file )); if ( $timedif >= $this ->cache_time) { $result [ 'cached' ] = 2; } else { // cached file is fresh enough, return cached array $result [ 'value' ] = unserialize( file_get_contents ( $cache_file )); $result [ 'cached' ] = 1; } } else { echo "Error:no cache" ; $result [ 'cached' ] = 0; } return $result ; } } //end of class |
用法示例如下:
1
2
3
4
5
6
|
$cache = new XZCache(); $key = 'global' ; $value = $GLOBALS ; $cache ->saveCache( $key , $value ); $result = $cache ->getCache( $key ); var_dump( $result ); |
希望本文所述对大家的php程序设计有所帮助。