简单的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 相关文章推荐
php Sql Server连接失败问题及解决办法
Aug 07 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
php json与xml序列化/反序列化
Oct 28 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
PHP实现GIF图片验证码
Nov 04 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
Git命令之分支详解
Mar 02 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
PHP安全性漫谈
2012/06/28 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
详解package.json版本号规则
2019/08/01 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Python 字符串中的字符倒转
2008/09/06 Python
Python import用法以及与from...import的区别
2015/05/28 Python
python之super的使用小结
2018/08/13 Python
python生成九宫格图片
2018/11/19 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
python 伯努利分布详解
2020/02/25 Python
Python读写锁实现实现代码解析
2020/11/28 Python
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
光声世纪笔试题目
2012/08/25 面试题
大学生物业管理求职信
2013/10/24 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
2015年电教工作总结
2015/05/26 职场文书
公司会议开幕词
2016/03/03 职场文书
2019年最新借条范本!
2019/07/08 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
索尼ICF-5900W收音机测评
2022/04/24 无线电