当前位置:首页 > PHP教程 > php类库 > 列表

常见php数据文件缓存类汇总

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-02 21:22:53 浏览: 评论:0 

这篇文章主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下。

本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考,具体分析如下:

数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的朋友可以参考一下。

1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了.

2.对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了.

3.缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库.

文件缓存类,代码如下:

  1. <?php 
  2. class DataCache 
  3.  /** 
  4.   * 数组转换 
  5.   * 
  6.   * @param array $array 
  7.   * @param string $arrayName 
  8.   * @param array $level 
  9.   * 
  10.   * @return string 
  11.   */ 
  12.  private function arrayEval($array$arrayName = ''$level = 0) 
  13.  { 
  14.   $space = str_repeat("t"$level); 
  15.  
  16.   if (emptyempty($arrayName)) 
  17.   { 
  18.    $evaluate = "arrayn$space(n"
  19.   } 
  20.   else 
  21.   { 
  22.    $evaluate = "${$arrayName} = arrayn$space(n"
  23.   } 
  24.  
  25.   $space2 = str_repeat("t"$level + 1); 
  26.   $comma = $space2
  27.   if (!emptyempty($array)) 
  28.   { 
  29.    foreach ($array as $key => $val
  30.    { 
  31.     $key = is_string($key) ? ''' . addcslashes($key, ''\') . ''' : $key
  32.     $val = !is_array($val) && (!preg_match('/^-?[1-9]d*$/'$val) || strlen($val) > 12) ? ''' . addcslashes($val, ''\') . ''' : $val
  33.     if (is_array($val)) 
  34.     { 
  35.      $evaluate .= "$comma$key => " . arrayEval($val''$level + 1); 
  36.     } 
  37.     else 
  38.     { 
  39.      $evaluate .= "$comma$key => $val"
  40.     } 
  41.     $comma = ",n$space2"
  42.    } 
  43.   } 
  44.   $evaluate .= "n$space)"
  45.  
  46.   // 最后才需要一个“;” 
  47.   if ($level == 0) 
  48.   { 
  49.    $evaluate .= ";"
  50.   } 
  51.   return $evaluate
  52.  } 
  53.  
  54.  /** 
  55.   * 写入缓存 
  56.   * 
  57.   * @param string $path 
  58.   * @param string $arrayName 
  59.   * @param array  $data 
  60.   * 
  61.   * @return boolean 
  62.   */ 
  63.  public static function writeCache($path$arrayName$data
  64.  { 
  65.   if ($handle = fopen($path'w+')) 
  66.   { 
  67.    $data = self::arrayEval($data$arrayName); 
  68.  
  69.    $dataConvert = "<?phpn" . $data
  70.  
  71.    flock($handle, LOCK_EX); 
  72.    $rs = fputs($handle$dataConvert); 
  73.    flock($handle, LOCK_UN); 
  74.    fclose($handle); 
  75.    if ($rs !== false) 
  76.    { 
  77.     return true; 
  78.    } 
  79.   } 
  80.   return false; 
  81.  } 
  82. ?> 

调用方法,代码如下:

  1. /** 
  2. * 生成文件缓存 
  3. * 
  4. * @param string $filePath 缓存文件的保存路径 
  5. * @param string $arrayName 存放在缓存文件中的数组名称 
  6. * @param array $data 数据 
  7. * 
  8. * @return boolean 
  9. */ 
  10. DataCache::writeCache($filePath$arrayName$data); 

memcache来缓存数据,这里提供这个文件缓存的类,代码如下:

  1. <?php 
  2. /** 
  3.  * 文件缓存类 
  4.  * 提供文件缓存 
  5.  */ 
  6. class Cache_FileCache{ 
  7.      
  8.     /** 
  9.      * 设置缓存 
  10.      * @param $key 缓存的关键字key 
  11.      * @param $data 缓存的内容 
  12.      * @param $cacheLife 缓存时间(单位为秒)如果为0 则表示无限时间 
  13.      * @return Bool 
  14.      */ 
  15.     public static function setCache($key,$data,$cacheLife
  16.     { 
  17.             if(file_exists(__SITE_FILE_CACHE)) 
  18.             { 
  19.                 @$file                =  __SITE_FILE_CACHE . "/" . $key .".php"
  20.                 $cache                  =  array(); 
  21.                 $time                =  __SYS_TIME; 
  22.                 $cache['content']    =  $data
  23.                 $cache['expire']    =  $cacheLife === 0 ? 0 : $time+$cacheLife
  24.                 $cache['mtime']        =  $time
  25.                 $cache                =  serialize($cache); 
  26.                 $setReslut            =  @file_put_contents($file,$cacheor self::error(__line__,"文件写入出错"); 
  27.                 $chmodReslut        =  @chmod($file,0777) or self::error(__line__,"设定文件权限失败"); 
  28.                 if($setReslut && $chmodReslut
  29.                 { 
  30.                     return true; 
  31.                 } 
  32.                 else 
  33.                 { 
  34.                     return false; 
  35.                 } 
  36.             } 
  37.     } 
  38.  
  39.     /** 
  40.      * 得到缓存数据 
  41.      * @param $key 缓存的关键字key 
  42.      * @return array 
  43.      */ 
  44.     public static function getCache($key
  45.     { 
  46.             @$file                =      __SITE_FILE_CACHE . "/" . $key .".php"
  47.             if(file_exists($file)) 
  48.             { 
  49.                      $data        =    @file_get_contents($file); 
  50.                      $data        =   unserialize($data); 
  51.                      if($data['expire']==0 || $data['expire'] > __SYS_TIME) 
  52.                      { 
  53.                          return $data['content']; 
  54.                      } 
  55.                      else  
  56.                      { 
  57.                          unlink($file); 
  58.                          return array(); 
  59.                      } 
  60.             }         
  61.     } 
  62.      
  63.     /** 
  64.      * 删除缓存文件 
  65.      * @param $key 缓存$key 
  66.      * @return Bool 
  67.      */ 
  68.     public static function delCache($key
  69.     {         
  70.         if (@unlink(__SITE_FILE_CACHE."/".$key.".php")) 
  71.         { 
  72.             return true; 
  73.         } 
  74.         else 
  75.         { 
  76.             return false; 
  77.         } 
  78.     } 
  79.      
  80.     /** 
  81.      * 清除所有缓存文件 
  82.      * @return Bool 
  83.      */ 
  84.      
  85.     public static function clearAllCache() 
  86.     { 
  87.         $files = scandir(__SITE_FILE_CACHE); 
  88.         foreach ($files as $val
  89.         { 
  90.             @unlink(__SITE_FILE_CACHE."/".$val); 
  91.         } 
  92.     } 
  93.      
  94.     /** 
  95.      * 出错处理函数 
  96.      * @param $line 行数 
  97.      * @param $msg  信息 
  98.      */ 
  99.     public static function error($line,$msg
  100.     { 
  101.         die("出错文件:".__file__."/n出错行:$line/n错误信息:$msg"); 
  102.     } //www.phpfensi.com 
  103. ?> 

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

Tags: php数据 php文件缓存类

分享到: