简单的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 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php全排列递归算法代码
Oct 09 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
laravel Model 执行事务的实现
Oct 10 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变量内存分配问题记录整理
2013/11/27 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
js new Date()实例测试
2019/10/31 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
python求绝对值的三种方法小结
2019/12/04 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
个人找工作自荐信格式
2013/09/21 职场文书
护理专科自荐书范文
2014/02/18 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
入党积极分子考察意见
2015/06/02 职场文书
辩护意见书
2015/06/04 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python