简单的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中通过smtp发邮件的类,测试通过
Jan 22 PHP
初级的用php写的采集程序
Mar 16 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php防盗链的常用方法小结
Jul 02 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
PHP计数器的实现代码
Jun 08 PHP
PHP简单实现无限级分类的方法
May 13 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
Jan 23 PHP
php异常处理捕获错误整理
Sep 23 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网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
js更优雅的兼容
2010/08/12 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
Python使用Scrapy爬取妹子图
2015/05/28 Python
python实现简单爬虫功能的示例
2016/10/24 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
python创造虚拟环境方法总结
2019/03/04 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
行政人员岗位职责
2013/12/08 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL