Files
2023-06-22 13:33:25 +08:00

85 lines
2.2 KiB
PHP

<?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...
}
*/