@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
defined ( 'IN_TS' ) or die ( 'Access Denied.' );
|
||||
class tsFileCache {
|
||||
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 __construct($exp_time = 3600, $path = "data/") {
|
||||
$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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
使用说明:
|
||||
|
||||
1、实例化
|
||||
|
||||
$cache = new tsFileCache();
|
||||
2、设置缓存时间和缓存目录
|
||||
|
||||
$cache = new tsFileCache(60, '/any_other_path/');
|
||||
第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
|
||||
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/
|
||||
|
||||
3、读取缓存
|
||||
|
||||
$value = $cache->get('data_key');
|
||||
4、写入缓存
|
||||
|
||||
$value = $cache->put('data_key', 'data_value');
|
||||
完整实例:
|
||||
|
||||
$cache = new tsCache();
|
||||
|
||||
//从缓存从读取键值 $key 的数据
|
||||
$values = $cache->get($key);
|
||||
|
||||
//如果没有缓存数据
|
||||
if ($values == false) {
|
||||
//insert code here...
|
||||
//写入键值 $key 的数据
|
||||
$cache->put($key, $values);
|
||||
} else {
|
||||
//insert code here...
|
||||
}
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user