简单的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 相关文章推荐
文件上传类
Oct 09 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
Dec 25 PHP
php获取POST数据的三种方法实例详解
Dec 20 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的面试题集
2006/11/19 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
javascript实现简单留言板案例
2021/02/09 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python实现俄罗斯方块游戏
2020/03/25 Python
python 多线程重启方法
2019/02/18 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
教育局长自荐信范文
2013/12/22 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
环保倡议书400字
2014/05/15 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
爱国主题班会教案
2015/08/14 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers