简单的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个人网站架设连环讲(三)
Oct 09 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
php有道翻译api调用方法实例
Dec 22 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
php实现断点续传大文件示例代码
Jun 19 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使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
axios学习教程全攻略
2017/03/26 Javascript
深入理解vue中的$set
2017/06/01 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Python随机数random模块使用指南
2016/09/09 Python
Django的信号机制详解
2017/05/05 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
详解python算法之冒泡排序
2019/03/05 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
护理专业的自荐信
2013/10/22 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
药店营业员岗位职责
2015/04/14 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
老员工辞职信范文
2015/05/12 职场文书
天气温馨提示语
2015/07/14 职场文书
Python数据结构之队列详解
2022/03/21 Python