首页 > 代码库 > PHP缓存之文件缓存

PHP缓存之文件缓存

1、PHP文件缓存内容保存格式
       PHP文件缓存内容保存格式主要有三种:
       (1)变量 var_export 格式化成PHP正常的赋值书写格式;
       (2)变量 serialize 序列化之后保存,用的时候反序列化;
       (3)变量 json_encode格式化之后保存,用的时候json_decode
       互联网上测试结果是:serialize格式的文件解析效率大于Json,Json的解析效率大于PHP正常赋值。
       所以我们要是缓存数据建议采用序列化的形式解析数据会更快。

2、PHP文件缓存的简单案例

[php] view plaincopyprint?
  1. <?php 
  2. class Cache_Driver{ 
  3.     //定义缓存的路径 
  4.     protected $_cache_path
  5.  
  6. //根据$config中的cache_path值获取路径信息 
  7.     public function Cache_Driver($config
  8.     { 
  9.         if(is_array($config) && isset($config[‘cache_path‘])) 
  10.         { 
  11.            $this->_cache_path =$config[‘cache_path‘]; 
  12.         } 
  13.         else 
  14.         { 
  15.            $this->_cache_path =realpath(dirname(__FILE__)."/")."/cache/"
  16.         } 
  17.     } 
  18. //判断key值对应的文件是否存在,如果存在,读取value值,value以序列化存储 
  19.     public function get($id
  20.     { 
  21.         if ( ! file_exists($this->_cache_path.$id)) 
  22.         { 
  23.             return FALSE; 
  24.         } 
  25.          
  26.         $data = @file_get_contents($this->_cache_path.$id); 
  27.         $data = unserialize($data); 
  28.          
  29.         if(!is_array($data) || !isset($data[‘time‘]) || !isset($data[‘ttl‘])) 
  30.         { 
  31.             return FALSE; 
  32.         } 
  33.          
  34.         if ($data[‘ttl‘] > 0 && time() > $data[‘time‘] +$data[‘ttl‘]) 
  35.         { 
  36.             @unlink($this->_cache_path.$id); 
  37.             return FALSE; 
  38.         } 
  39.          
  40.         return $data[‘data‘]; 
  41.     } 
  42. //设置缓存信息,根据key值,生成相应的缓存文件 
  43.     public function set($id,$data, $ttl = 60) 
  44.     {        
  45.         $contents = array
  46.                 ‘time‘      => time(), 
  47.                 ‘ttl‘       =>$ttl,          
  48.                 ‘data‘      => $data 
  49.             ); 
  50.          
  51.         if (@file_put_contents($this->_cache_path.$id, serialize($contents))) 
  52.         { 
  53.             @chmod($this->_cache_path.$id, 0777); 
  54.             return TRUE;             
  55.         } 
  56.  
  57.         return FALSE; 
  58.     } 
  59. //根据key值,删除缓存文件 
  60.     public functiondelete($id
  61.     { 
  62.         return @unlink($this->_cache_path.$id); 
  63.     } 
  64.  
  65.     public function clean() 
  66.     { 
  67.       $dh = @opendir($this->_cache_path); 
  68.        if(!$dh
  69.          return FALSE; 
  70.        
  71.       while ($file = @readdir($dh)) 
  72.       { 
  73.          if($file =="." || $file ==".."
  74.             continue
  75.           
  76.          $path = $this->_cache_path."/".$file
  77.          if(is_file($path)) 
  78.             @unlink($path); 
  79.       } 
  80.       @closedir($dh); 
  81.        
  82.         return TRUE; 
  83.     } 

PHP缓存之文件缓存