简单的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输出xml格式字符串(用的这个)
Jul 12 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
laravel 框架实现无限级分类的方法示例
Oct 31 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
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
Python从MP3文件获取id3的方法
2015/06/15 Python
scrapy爬虫实例分享
2017/12/28 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
民间借贷协议书范本
2014/10/01 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
消防安全培训工作总结
2015/10/23 职场文书
PHP新手指南
2021/04/01 PHP
Python sklearn分类决策树方法详解
2022/09/23 Python