简单的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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
PHP使用递归按层级查找数据的方法
Nov 10 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中$_SERVER的详细参数与说明
2008/07/29 PHP
php动态生成函数示例
2014/03/21 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
js实现导航跟随效果
2018/11/17 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Django forms组件的使用教程
2018/10/08 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python实现扫描ip地址的小程序
2019/04/16 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
群众路线个人对照检查材料2014
2014/09/26 职场文书
人事聘任通知
2015/04/21 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
欢送领导祝酒词
2015/08/12 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python