简单的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版(3)
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
剖析 PHP 中的输出缓冲
Dec 21 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
PHP内置加密函数详解
Nov 20 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
浅谈php://filter的妙用
Mar 05 PHP
PHP7 错误处理机制修改
Mar 09 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调用Twitter的RSS的实现代码
2010/03/10 PHP
php实现监听事件
2013/11/06 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
python实现按长宽比缩放图片
2018/06/07 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python新手学习raise用法
2020/06/03 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
python openssl模块安装及用法
2020/12/06 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
python装饰器代码解析
2022/03/23 Python