PHP文件缓存类示例分享
程序员文章站
2023-11-09 13:30:46
复制代码 代码如下:
<?php
/**
* @desc 文件缓存
*/
class cache{
const c_file = '/runtime/';
private $dir = '';
const ext = '.tpl';
private $filename = '';
public function __construct($dir = ''){
$this->dir = $dir;
}
/**
* @desc 设置文件缓存
* @param string $key 文件名
* @param unkonw $data 缓存数据
* @param int $expire 过期时间
*/
public function set($key,$data,$expire = 0){
$this->filename = dirname(__file__).self::c_file.$this->dir.$key.self::ext;
if(file_exists($this->filename)){
$res = $this->get($key);
if(md5($res) == md5(json_encode($data) ) ){
return true;
}
}
if(!is_dir(dirname($this->filename))){
mkdir(dirname($this->filename),0777);
}
$source = fopen($this->filename,'w+');
fwrite($source,json_encode($data));
fclose($source);
}
/**
* @desc 获取文件
* @param string $key 文件名
*/
public function get($key){
//$filename = dirname(__file__).self::c_file.$this->dir.$key.self::ext;
if(!file_exists($this->filename)){
return '缓存文件已经不存在';
}else{
$res = file_get_contents($this->filename);
}
return $res;
}
/**
* @desc 删除文件
* @param string $key 文件名
*/
public function del($key){
unlink($this->filename);
}
}
$data = array('name'=>'song','age'=>20,'sex'=>'man','favority'=>array('apple','banana'));
$cache = new cache();
$cache->set('cache',$data);
//$cache->get('cache');
//$cache->del('cache');
复制代码 代码如下:
<?php
/**
* @desc 文件缓存
*/
class cache{
const c_file = '/runtime/';
private $dir = '';
const ext = '.tpl';
private $filename = '';
public function __construct($dir = ''){
$this->dir = $dir;
}
/**
* @desc 设置文件缓存
* @param string $key 文件名
* @param unkonw $data 缓存数据
* @param int $expire 过期时间
*/
public function set($key,$data,$expire = 0){
$this->filename = dirname(__file__).self::c_file.$this->dir.$key.self::ext;
if(file_exists($this->filename)){
$res = $this->get($key);
if(md5($res) == md5(json_encode($data) ) ){
return true;
}
}
if(!is_dir(dirname($this->filename))){
mkdir(dirname($this->filename),0777);
}
$source = fopen($this->filename,'w+');
fwrite($source,json_encode($data));
fclose($source);
}
/**
* @desc 获取文件
* @param string $key 文件名
*/
public function get($key){
//$filename = dirname(__file__).self::c_file.$this->dir.$key.self::ext;
if(!file_exists($this->filename)){
return '缓存文件已经不存在';
}else{
$res = file_get_contents($this->filename);
}
return $res;
}
/**
* @desc 删除文件
* @param string $key 文件名
*/
public function del($key){
unlink($this->filename);
}
}
$data = array('name'=>'song','age'=>20,'sex'=>'man','favority'=>array('apple','banana'));
$cache = new cache();
$cache->set('cache',$data);
//$cache->get('cache');
//$cache->del('cache');