PHP缓存小作

<!--cache.php-->
<?php
class cache {
    var $_file;
    var $cache_time;
    var $CacheRoot=CACHE_PATH;
 function cache($cache_time=1,$CacheUrl=false) {//初始化
  //$this -> _file      = $CacheUrl ? ($this->CacheRoot.$CacheUrl) : ($this -> CacheRoot.$this -> get_url());
  $this -> _file      = $CacheUrl ? $CacheUrl : ($this -> CacheRoot.$this -> get_url());
  $this -> cache_time = $cache_time;
 }
 function start() {
  if($this->cache_is_active()) {
   include($this->_file);
   exit;
  }
  ob_start();
 }
 function _end() {
  $this->make_cache();
  ob_end_flush();
 }
 function cache_is_active() {//判断文件是否存在以及过期
  if ($this->cache_is_exist()) {
   if (time() - $this->lastModified() < $this->cache_time){
    Return true;
   }
   else{
    Return false;
   }
  }
  else{
   Return false;
  }
 }
 function make_cache() {//生成缓存
  $content = $this->get_cache_content();
  if($this->write_file($content))
  {
   Return true;
  }
  else
  {
   Return false;
  }
 }
 function cache_is_exist() {//检测问是否存在
  if(file_exists($this->_file)){Return true;}
  else{Return false;}
 }
 function lastModified() {//取得文件最后修改时间
  Return @filemtime($this->_file);
 }
 function get_cache_content() {//取得文件内容
  $contents = ob_get_contents();
  return $contents;
  //return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;//缓存时间
 }
 function write_file($content){//建立缓存文件
  $this->mk_dir($this->_file);
  if(!$fp=fopen($this->_file,'w')){
   $this->report_Error('无法打开缓存文件.');//trigger_error
   return false;
  }
  if(!flock($fp,LOCK_EX)){
   $this->report_Error('无法锁定缓存文件.');
   return false;
  }
  if(!fwrite($fp,$content)){
   $this->report_Error('无法写入缓存文件.');
   return false;
  }
  flock($fp,LOCK_UN);//释放锁定
  fclose($fp);//关闭
  return true;
 }
 function mk_dir(){//建立目录
  $dir    = @explode("/", $this->_file);
  $num    = @count($dir)-1;
  $tmp    = './';
  for($i=0; $i<$num; $i++){
   $tmp    .= $dir[$i];
   if(!file_exists($tmp)){
    @mkdir($tmp);
    @chmod($tmp, 0777);
   }
   $tmp    .= '/';
  }
 }
 function clear_cache() {//清除缓存文件,后台使用
  if ( _file">!@unlink($this->_file)) {
   $this->report_Error('Unable to remove cache');
   Return false;
  }
  else {
   Return true;
  }
 }
 function get_url() {//取得当前文件URL并使用base64_encode进行编码
  if (isset($_SERVER['REQUEST_URI'])) {
   $url = $_SERVER['REQUEST_URI'];
  }else{
   $url = $_SERVER['script_NAME'];
   $url .= (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : '';
  }
  return base64_encode($url);
 }
 function report_Error($message=NULL) {//发送错误
  if($message!=NULL) {
   trigger_error($message);
  }
 }
}
?>
<!--index.php-->
<?php
require_once('cache.php');
$cache = new cache(20,"./cache/index.cache");//参数:时间(秒),缓存路径
$cache->start();
echo date("Y-m-d h:i:s");
$cache->_end();
?>
 

本文出自 “逍遥郭” 博客,谢绝转载!

你可能感兴趣的:(PHP,职场,休闲)