简单的php缓存类分享     php缓存机制


Posted in PHP onJanuary 22, 2014
<?php
class Cache 
{
 private $dir = "data/cache/";//定义缓存目录 
 private $key='c_a_sss'; // 文件名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['time'] < $minutes*60)
    {
     return $datas['data'];
    }
  }
  return false;
 }
 function write($key,$data)
 {  
  $filename=$this->get_filename($key);
  if($handle = fopen($filename,'w+'))
  {
   $datas = array('data'=>$data,'time'=>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.'_'.md5($key.$this->key);
 }
 private function make_dir($path)
 {
  if (! file_exists ( $path ))
  {
   $this->make_dir ( dirname ( $path ) );
   if (! mkdir ( $path, 0777 ))
   die ( '无法创建缓存文件夹' . $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('data/cache_dir/');
  $data=$cache->read('sys',1);
  if(empty($data))
  {
   $data=array('aa'=>1111,'bb'=>2222,'date'=>date('Y-m-d H:i:s'));
   $cache->write('sys',$data); 
  }
  print_r($data);
PHP 相关文章推荐
计数器详细设计
Oct 09 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php实例分享之二维数组排序
May 15 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
laravel自定义分页效果
Jul 23 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
Laravel ORM 数据model操作教程
Oct 21 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 #PHP
discuz加密解密函数使用方法和中文注释
Jan 21 #PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 #PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 #PHP
php设计模式之单例模式使用示例
Jan 20 #PHP
php实现图形显示Ip地址的代码及注释
Jan 20 #PHP
php判断手机访问还是电脑访问示例分享
Jan 20 #PHP
You might like
玩转虚拟域名◎+ .
2006/10/09 PHP
php中的比较运算符详解
2013/10/28 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python比较2个xml内容的方法
2015/05/11 Python
python版本的仿windows计划任务工具
2018/04/30 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
pip安装python库的方法总结
2019/08/02 Python
python带参数打包exe及调用方式
2019/12/21 Python
python 实现的车牌识别项目
2021/01/25 Python
Python 中Operator模块的使用
2021/01/30 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
教师一岗双责责任书
2014/04/16 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
大学生实训报告总结
2014/11/05 职场文书
军事理论课感想
2015/08/11 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL