简单的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程序的方法
Mar 09 PHP
php数组中删除元素的实现代码
Jun 22 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
php实现微信支付之现金红包
May 30 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 PHP
详解PHP设计模式之依赖注入模式
May 25 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查看session内容的函数
2008/08/27 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
JavaScript Prototype对象
2009/01/07 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
vue使用axios实现excel文件下载的功能
2020/07/16 Javascript
python装饰器使用方法实例
2013/11/21 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
python压包的概念及实例详解
2021/02/17 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
文秘专业个人求职信
2013/12/22 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
查摆剖析材料范文
2014/09/30 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
2016继续教育研修日志
2015/11/13 职场文书
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js