简单的php缓存类分享     php缓存机制

 更新时间:2014年01月22日 09:37:37   作者:  
这篇文章主要介绍了一个php缓存类,文件名使用md5加密,大家参考使用吧

复制代码 代码如下:

<?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模拟post提交数据方法汇总

    PHP模拟post提交数据方法汇总

    使用php模拟post传值虽然在日常生活中用到的不是很多,但是在某些场合还是经常用到的。下面脚本之家小编给大家整理了三种php模拟post传值的方法,file_get_contents、curl和socket,需要的朋友参考下
    2016-02-02
  • CI映射(加载)数据到view层的方法

    CI映射(加载)数据到view层的方法

    这篇文章主要介绍了CI映射(加载)数据到view层的方法,结合实例形式分析了CI映射加载数据到view层的原理与正确使用方法,需要的朋友可以参考下
    2016-03-03
  • PHP Laravel 使用Swagger生成API文档(基本概念和环境搭建)

    PHP Laravel 使用Swagger生成API文档(基本概念和环境搭建)

    Swagger是一种简单、强大的RESTful API表现形式,这篇文章主要介绍了PHP Laravel 使用Swagger生成API文档(基本概念和环境搭建),需要的朋友可以参考下
    2023-09-09
  • php实现JWT(json web token)鉴权实例详解

    php实现JWT(json web token)鉴权实例详解

    这篇文章主要介绍了php实现JWT(json web token)鉴权实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Laravel5框架自定义错误页面配置操作示例

    Laravel5框架自定义错误页面配置操作示例

    这篇文章主要介绍了Laravel5框架自定义错误页面配置操作,结合具体实例形式分析了Laravel5自定义错误页面的原理、操作步骤及相关实现技巧,需要的朋友可以参考下
    2019-04-04
  • PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能

    PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能

    这篇文章主要介绍了PHP 结合 Boostrap 结合 js 实现学生列表删除编辑以及搜索功能,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • 老生常谈PHP面向对象之标识映射

    老生常谈PHP面向对象之标识映射

    下面小编就为大家带来一篇老生常谈PHP面向对象之标识映射。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • php创建sprite

    php创建sprite

    本文介绍了使用PHP根据文件夹内的图片生成sprite合成图示例,需要的朋友可以参考下
    2014-02-02
  • PHP 实现手机端APP支付宝支付功能

    PHP 实现手机端APP支付宝支付功能

    最近应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-06-06
  • thinkphp3.x中cookie方法的用法分析

    thinkphp3.x中cookie方法的用法分析

    这篇文章主要介绍了thinkphp3.x中cookie方法的用法,结合实例形式分析了thinkPHP中cookie方法的设置、获取、删除等常用操作技巧,需要的朋友可以参考下
    2016-05-05

最新评论