当前位置:首页 > PHP教程 > php应用 > 列表

PHP文件缓存内容保存格式实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-07 11:18:32 浏览: 评论:0 

这篇文章主要介绍了PHP文件缓存内容保存格式,是PHP程序开发中非常实用的功能,需要的朋友可以参考下。

本文实例讲述了PHP文件缓存内容保存格式,对于进行PHP项目开发非常具有实用价值。分享给大家供大家参考借鉴。具体分析如下:

1、PHP文件缓存内容保存格式

PHP文件缓存内容保存格式主要有三种:

(1)变量 var_export 格式化成PHP正常的赋值书写格式;

(2)变量 serialize 序列化之后保存,用的时候反序列化;

(3)变量 json_encode格式化之后保存,用的时候json_decode

互联网上测试结果是:serialize格式的文件解析效率大于Json,Json的解析效率大于PHP正常赋值。

所以我们要是缓存数据建议采用序列化的形式解析数据会更快。

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

  1. <?php 
  2. class Cache_Driver { 
  3.   //定义缓存的路径 
  4.   protected $_cache_path
  5.   //根据$config中的cache_path值获取路径信息 
  6.   public function Cache_Driver($config) { 
  7.     if (is_array($config) && isset($config['cache_path'])) { 
  8.       $this->_cache_path = $config['cache_path']; 
  9.     } else { 
  10.       $this->_cache_path = realpath(dirname(__FILE__) . "/") . "/cache/"
  11.     } 
  12.   } 
  13.   //判断key值对应的文件是否存在,如果存在,读取value值,value以序列化存储 
  14.   public function get($id) { 
  15.     if (!file_exists($this->_cache_path . $id)) { 
  16.       return FALSE; 
  17.     } 
  18.     $data = @file_get_contents($this->_cache_path . $id); 
  19.     $data = unserialize($data); 
  20.     if (!is_array($data) || !isset($data['time']) || !isset($data['ttl'])) { 
  21.       return FALSE; 
  22.     } 
  23.     if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl']) { 
  24.       @unlink($this->_cache_path . $id); 
  25.       return FALSE; 
  26.     } 
  27.     return $data['data']; 
  28.   } 
  29.   //设置缓存信息,根据key值,生成相应的缓存文件 
  30.   public function set($id$data$ttl = 60) { 
  31.     $contents = array
  32.       'time' => time() , 
  33.       'ttl' => $ttl
  34.       'data' => $data 
  35.     ); 
  36.     if (@file_put_contents($this->_cache_path . $id, serialize($contents))) { 
  37.       @chmod($this->_cache_path . $id, 0777); 
  38.       return TRUE; 
  39.     } 
  40.     return FALSE; 
  41.   } 
  42.   //根据key值,删除缓存文件 
  43.   public function delete($id) { 
  44.     return @unlink($this->_cache_path . $id); 
  45.   } 
  46.   public function clean() { 
  47.     $dh = @opendir($this->_cache_path); 
  48.     if (!$dhreturn FALSE; 
  49.     while ($file = @readdir($dh)) { 
  50.       if ($file == "." || $file == ".."continue
  51.       $path = $this->_cache_path . "/" . $file
  52.       if (is_file($path)) @unlink($path); 
  53.     } 
  54.     @closedir($dh); 
  55.     return TRUE; 
  56.   } 
希望本文所述PHP缓存实例对大家的PHP程序开发能起到一定的帮助借鉴作用。

Tags: PHP文件缓存

分享到: