简单的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经典的给图片加水印程序
Dec 06 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
php 数组元素快速去重
May 05 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
Smarty模板语法详解
Jul 20 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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获取网卡地址的代码
2008/04/09 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
xml和web特殊字符
2009/04/28 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
详解JS模块导入导出
2017/12/20 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python连接phoenix的方法示例
2017/09/29 Python
Python查看微信撤回消息代码
2018/06/07 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
公司合作协议书范本
2014/04/18 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
首次购房证明
2015/06/19 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL