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

PHP缓存之文件缓存的相关文章

PHP程序缓存之文件缓存处理方式

PHP程序缓存之文件缓存处理方式在开发程序过程中,缓存的设置大大提升程序效率,减小数据库负载.基本配置缓存和常规配置缓存 基本配置缓存在项目开发中类似这样子的格式: 文件:config.php $CFG['database'] = 'mysql'; $CFG['pconnect'] = '0'; $CFG['db_host'] = 'localhost'; $CFG['db_name'] = 'appcom'; $CFG['db_user'] = 'root'; $CFG['db_pass']

Android缓存机制&amp;一个缓存框架推荐

1.先推荐一个轻量级缓存框架--ACache(ASimpleCache) ACache介绍: ACache类似于SharedPreferences,但是比SharedPreferences功能更加强大,SharedPreferences只能保存一些基本数据类型.Serializable.Bundle等数据, 而Acache可以缓存如下数据: 普通的字符串.JsonObject.JsonArray.Bitmap.Drawable.序列化的java对象,和 byte数据. 主要特色: 1:轻,轻到只

YII 缓存之片段缓存

我们网站在进行访问的时候,有一些信息在相对一段时间之内是稳定,我们就把这样的信息放入缓存里边,这样用户每次来访问就是访问缓存的信息,对于大负载量的网站,可以明显提高网站的性能. YII本身缓存类型: 缓存分类: 片段缓存     一个页面划分为几个区域,这几个区域相对比较独立,设计缓存的时候,可以为每个区域独立开发制作缓存 页面缓存 :对整个页面进行缓存 动态缓存 数据缓存 使用片段缓存步奏: 1. 在程序里边设置缓存 <form name="compareForm" actio

文件缓存的场景

1.缓存一些不经常改的数据,如页面显示什么导航,侧边栏按什么分类 2.文件缓存系统设置:如缓存公司用哪个邮箱向用户发邮件:

静态文件和文件缓存

静态文件和文件缓存 1.在应用配置 settings 中指定 static_path 选项来提供静态文件服务:   2.在应用配置 settings 中指定 static_url_prefix 选项来提供静态文件前缀服务: 3.在导入静态文件时用 {{static_url('XX.css')}} 方式实现主动缓存静态文件 Tornado中, 你可以通过在应用程序中指定特殊的 static_path 来提供静态文 件服务: settings = { "static_path": os.p

apache下用expires_module让浏览器缓存静态文件

apache下用expires_module让浏览器缓存静态文件 apache配置静态缓存的原因: 第一点,       减轻服务器的压力. 第二点,       省去浏览器经常要去服务端下载CSS.JS.图片.静态文件等,减小不必要的网络IO. 配置步骤: 1. 在apache主配置文件中开启apache扩展模块mod_expires.so,命令: Vi /usr/local/apache2/conf/httpd.conf,如下图所示: 2. 配置缓存,在apache的虚拟主机(/usr/lo

PHP文件缓存实现

有些时候,我们不希望使用redis等第三方缓存,使得系统依赖于其他服务.这时候,文件缓存会是一个不错的选择. 我们需要文件缓存实现哪些功能: 功能实现:get.set.has.increment.decrement.delete.flush 能够在较短的时间内返回数据 支持key过期 为了避免一个文件内的数据过大,造成读取文件的时候延迟较高,我们采用一个key-value一个文件的方式实现存储结构. 为了支持key过期,我们需要把expire数据写入到文件中,所以需要对写入的数据进行序列化处理

霸气!Nginx 中缓存静态文件秘籍

导读 这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件.这样能节省带宽,并且在访问你的网站时会显得更快些(如果用户第二次访问你的网站,将会使用浏览器缓存中的静态文件). 1.准备事项 我想你需要一个正常工作的 nginx 软件,可以查看另一篇的帖子:在 Ubuntu 16.04 LTS 上安装 Nginx,P

Discuz!NT静态文件缓存(SQUID)

在目前最新版本的产品中,我们提供了缓存静态文件的解决方案,就是使用SQUID做静态前端,将论坛中的大部分静态文件布署或外链到一个新的HTTP链接上,其中可以外链的静态文件包括: 1.Discuz.web/Javascript/ 下所有以‘template_’打头的JS文件以及该文件夹下的部分js文件.     2.模版文件夹下的所有CSS或IMAGE文件(空间相册文件夹除外)     3.前台Image文件夹下的Medal(勋章),Topicidentify(主题鉴定图标)下的所有文件. 同时在