这篇文章主要介绍了一个php缓存类,文件名使用md5加密,大家参考使用吧
代码如下:
<?php class Cache
{
private $dir = "data/cache/";//定义缓存目录
private $key = 'c_a_sss'; // 文件名md5加密密钥
function set_dir($dirpath) {
$this->dir=$dirpath;
$this->make_dir($this->dir);
}
function read($key,$minutes=1) {
$filename=$this->get_filename($key);
if($datas = @file_get_contents($filename)){
$datas = unserialize($datas);
if(time() - $datas['time'] < $minutes*60) {
return $datas['data'];
}
}
return false;
}
function write($key,$data){
$filename=$this->get_filename($key);
if($handle = fopen($filename,'w+')) {
$datas = array('data'=>$data,'time'=>time());
flock($handle,LOCK_EX);
$rs = fputs($handle,serialize($datas));
flock($handle,LOCK_UN);
fclose($handle);
if($rs!==false){
return true;
}
}
return false;
}
function clear_all(){
$dir=$this->dir;
$this->del_file($dir);
}
private function get_filename($key){
return $this->dir.$key.'_'.md5($key.$this->key);
}
private function make_dir($path){
if (! file_exists ( $path )) {
$this->make_dir ( dirname ( $path ) );
if (! mkdir ( $path, 0777 ))
die ( '无法创建缓存文件夹' . $path );
}
}
private function del_file($dir){
if (is_dir($dir)){
$dh=opendir($dir);//打开目录
// //列出目录中的所有文件并去掉 . 和 ..
while (false !== ( $file = readdir ($dh))) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
$this->del_file($fullpath);
}
}
}
closedir($dh);
}
}
}
$cache = new cache();
$cache->set_dir('data/cache_dir/');
$data=$cache->read('sys',1);
if(empty($data)){
$data=array('aa'=>1111,'bb'=>2222,'date'=>date('Y-m-d H:i:s'));
$cache->write('sys',$data);}
print_r($data);
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号