简单的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 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
PHP 命名空间实例说明
Jan 27 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
基于PHP制作验证码
Oct 12 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
php生出随机字符串
Jul 06 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 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用mysql数据库存储session的代码
2010/03/05 PHP
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
python3.6数独问题的解决
2019/01/21 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
python 解决函数返回return的问题
2020/12/05 Python
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Spring中bean集合注入的方法详解
2022/07/07 Java/Android