Home > php教程 > php手册 > body text

简单的php缓存类分享

ringa_lee
Release: 2017-08-12 10:31:14
Original
1001 people have browsed it

这篇文章主要介绍了一个php缓存类,文件名使用md5加密,大家参考使用吧

代码如下: 

<?php class Cache
{
    private $dir = "data/cache/";//定义缓存目录
    private $key = &#39;c_a_sss&#39;; // 文件名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[&#39;time&#39;] < $minutes*60) {      
                return $datas[&#39;data&#39;];     
            }   
        }   
        return false;  
    }    
    function write($key,$data){     
        $filename=$this->get_filename($key);  
        if($handle = fopen($filename,&#39;w+&#39;)) {    
            $datas = array(&#39;data&#39;=>$data,&#39;time&#39;=>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.&#39;_&#39;.md5($key.$this->key);  
    }  
    private function make_dir($path){   
        if (! file_exists ( $path )) {    
            $this->make_dir ( dirname ( $path ) );    
            if (! mkdir ( $path, 0777 ))    
                die ( &#39;无法创建缓存文件夹&#39; . $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(&#39;data/cache_dir/&#39;);  
$data=$cache->read(&#39;sys&#39;,1);   
if(empty($data)){   
$data=array(&#39;aa&#39;=>1111,&#39;bb&#39;=>2222,&#39;date&#39;=>date(&#39;Y-m-d H:i:s&#39;));    
$cache->write(&#39;sys&#39;,$data);}   
print_r($data);
Copy after login


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template