간단 하고 실 용적 인 PHP 텍스트 캐 시 클래스 인 스 턴 스

캐 시 는 실제 사용 에서 광범 위 하 게 응용 되 어 서버 데이터베이스 에 대한 접근 을 줄 이 고 운행 속 도 를 높 일 수 있다.현재 많은 CMS 콘 텐 츠 관리 시스템 에서 캐 시 메커니즘 을 자주 사용 하여 시스템 운행 의 효율 을 높 인 다.다음은 잘 쓴 캐 시 클래스 입 니 다.캐 시 메커니즘 과 쓰기 방법 을 참고 하 십시오.
cache.inc.php

<?php
class Cache {
 /**
 * $dir :         
 * $lifetime :        ,    
 * $cacheid :       ,     
 * $ext :        (    ),             
 */
 private $dir;
 private $lifetime;
 private $cacheid;
 private $ext;
 /**
 *     ,          ,    
 */
 function __construct($dir='',$lifetime=1800) {
  if ($this--->dir_isvalid($dir)) {
   $this->dir = $dir;
   $this->lifetime = $lifetime;
   $this->ext = '.Php';
   $this->cacheid = $this->getcacheid();
  }
 }
 /**
 *         
 */
 private function isvalid() {
  if (!file_exists($this->cacheid)) return false;
  if (!(@$mtime = filemtime($this->cacheid))) return false;
  if (mktime() - $mtime > $this->lifetime) return false;
  return true;
 }
 /**
 *     
 * $mode == 0 ,                
 * $mode == 1 ,      (  $content    )         
 * $mode == 2 ,      (fopen ile_get_contents)         (           )
 */
 public function write($mode=0,$content='') {
  switch ($mode) {
   case 0:
    $content = ob_get_contents();
    break;
   default:
    break;
  }
  ob_end_flush();
  try {
   file_put_contents($this->cacheid,$content);
  }
  catch (Exception $e) {
   $this->error('      !       !');
  }
 }
 /**
 *     
 * exit()                ,                
 * ob_start()                      
 */
 public function load() {
  if ($this->isvalid()) {
   echo "This is Cache. ";
   //      ,     ?????
   require_once($this->cacheid);
   //echo file_get_contents($this->cacheid);
   exit();
  }
  else {
   ob_start();
  }
 }
 /**
 *     
 */
 public function clean() {
  try {
   unlink($this->cacheid);
  }
  catch (Exception $e) {
   $this->error('        !       !');
  }
 }
 /**
 *         
 */
 private function getcacheid() {
  return $this->dir.md5($this->geturl()).$this->ext;
 }
 /**
 *               
 */
 private function dir_isvalid($dir) {
  if (is_dir($dir)) return true;
  try {
   mkdir($dir,0777);
  }
  catch (Exception $e) {
    $this->error('                !       !');
    return false;   
  }
  return true;
 }
 /**
 *         url
 */
 private function geturl() {
  $url = '';
  if (isset($_SERVER['REQUEST_URI'])) {
   $url = $_SERVER['REQUEST_URI'];
  }
  else {
   $url = $_SERVER['Php_SELF'];
   $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
  }
  return $url;
 }
 /**
 *       
 */
 private function error($str) {
  echo $str;
 }
}
?>
demo.php

<php
/*
 *       
 */
 ------------------------------------Demo1-------------------------------------------
 require_once('cache.inc.php');
 $cachedir = './Cache/'; //      
 $cache = new Cache($cachedir,10); //           , $cache = new Cache($cachedir);
 if ($_GET['cacheact'] != 'rewrite') //      ,  xx.Php?cacheact=rewrite    ,    ,           
  $cache->load(); //    ,              
 //      
 echo date('H:i:s jS F');
 //      
 $cache->write(); //         ,    
 ------------------------------------Demo2-------------------------------------------
 require_once('cache.inc.php');
 $cachedir = './Cache/'; //      
 $cache = new Cache($cachedir,10); //           , $cache = new Cache($cachedir);
 if ($_GET['cacheact'] != 'rewrite') //      ,  xx.Php?cacheact=rewrite    ,    ,           
  $cache->load(); //    ,              
 //      
 $content = date('H:i:s jS F');
 echo $content;
 //      
 $cache->write(1,$content); //         ,    
 ------------------------------------Demo3-------------------------------------------
 require_once('cache.inc.php');
 define('CACHEENABLE',true);
 if (CACHEENABLE) {
  $cachedir = './Cache/'; //      
  $cache = new Cache($cachedir,10); //           , $cache = new Cache($cachedir);
  if ($_GET['cacheact'] != 'rewrite') //      ,  xx.Php?cacheact=rewrite    ,    ,           
   $cache->load(); //    ,               
 }
 //      
 $content = date('H:i:s jS F');
 echo $content;
 //      
 if (CACHEENABLE)
  $cache->write(1,$content); //         ,    
?>
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

좋은 웹페이지 즐겨찾기