Heim  >  Artikel  >  php教程  >  简单的php缓存类分享

简单的php缓存类分享

ringa_lee
ringa_leeOriginal
2017-08-12 10:31:141007Durchsuche

这篇文章主要介绍了一个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);


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn