简单的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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
php中函数的形参与实参的问题说明
Sep 01 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
thinkphp循环结构用法实例
Nov 24 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP查询网站的PR值
2013/10/30 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
基于Python实现粒子滤波效果
2020/12/01 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
推广普通话标语
2014/06/27 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
感谢信
2019/04/11 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技