> php教程 > PHP源码 > 본문

一个很方便的PHP缓存类!

PHP中文网
풀어 주다: 2016-05-25 17:12:23
원래의
1075명이 탐색했습니다.

php代码

cache_root=dirname(__FILE__).'/../cache';//缓存存放目录
	$this->file_dir=$file_dir;
	$this->cache_time=$cache_time;
	$this->file_two=$file_two;
	$this->file_fix=$file_fix;
	$this->file_name=md5($_SERVER['REQUEST_URI']).$this->file_fix;//缓存文件名
	$this->cache_file=$this->cache_dir=$this->cache_root.'/'.$this->file_dir;//缓存的二级文件夹
	if($this->file_two==1)$this->cache_dir=$this->cache_root.'/'.$this->file_dir.'/'.substr($this->file_name,0,2);//缓存的最终文件夹
	$this->cache_url=$this->cache_dir.'/'.$this->file_name;//文件存放的完整路径
	
	//GET方式请求才缓存,POST之后一般都希望看到最新的结果 
    if($_SERVER['REQUEST_METHOD']=='GET'){
      //如果缓存文件存在,并且没有过期,就把它读出来。
      if(file_exists($this->cache_url) && time()-filemtime($this->cache_url)cache_time){ 
        $fp=fopen($this->cache_url,'rb'); 
        fpassthru($fp); 
        fclose($fp); 
        exit; 
      }elseif(!file_exists($this->cache_dir)){//判断文件夹是否存在,不存在则创建
	    if(!file_exists($this->cache_file)){
		  if(!file_exists($this->cache_root)){
	        mkdir($this->cache_root,0777); 
            chmod($this->cache_root,0777);
		  }
		  mkdir($this->cache_file,0777); 
          chmod($this->cache_file,0777);
	   	  if($this->file_two==1){
            mkdir($this->cache_dir,0777); 
            chmod($this->cache_dir,0777);
		  }
	    }
	  }
	  //回调函数 AutoCache 
      //ob_start("AutoCache");
	  ob_start(array($this, "AutoCache"));
    }else{
	  //不是GET的请求就删除缓存文件 
      if(file_exists($this->cache_url))unlink($this->cache_url);
    }
  }
  function AutoCache($contents){
    $fp=fopen($this->cache_url,'wb'); 
    fwrite($fp,$contents); 
    fclose($fp); 
    chmod($this->cache_url,0777); 
    //生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。 
    $this->DelOldCache();
    return $contents;
  }
  function DelOldCache(){
    chdir($this->cache_root); 
    foreach (glob("*/*".$this->file_fix) as $file){ 
      if(time()-filemtime($file)>$this->cache_time)unlink($file);
    }
  }
}
?>
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!