智能家居将可个性化定制

    jeff
  • 发表于2018-06-12 18:20
  • 阅读(470)
此类是PHP页面缓存类的第二版,我做一些忧化和调整,并在原有页面缓存的基础上新增了数据缓存功能,具有按一定时间自动更新页面缓存,数据改变时更新数据缓存,获取缓存文件列表和删除所有缓存...

此类是PHP页面缓存类的第二版,我做一些忧化和调整,并在原有页面缓存的基础上新增了数据缓存功能,具有按一定时间自动更新页面缓存,数据改变时更新数据缓存,获取缓存文件列表和删除所有缓存文件的功能,具体实现,看代码,理论不多讲,代码里面有详细的说明。
<?php 
/** 
* Esj_Cache 

* @author heminghui 
* @version 0.2 
* @param string $cache_folder_dir cacher缓存文件夹所在的完整路径 
* @param int $cache_create_time 文件缓存时间 
* @example $cache=new Esj_Cache('esj/_cache',100)//缓存文件夹命名,不以./或/开头, 
* @example $cache->read_cache() 读取缓存并输出 
* @example $cache->creatre_cache() 创建缓存文件(放在文件未尾) 
* @example $cache->list_file() 返回所有缓存文件列表 
* @example $cache->del_file() 删除所有缓存文件 
* @example2 $cache->create_data_cache() //创建一个数据缓存 
* @example2 $cache->get_data_cache_content() //读取数据缓存的内容 
*/ 
class Esj_Cache{ 
private $wroot_dir=null;//站点目录 
private $cacher_create_time=null;//cacher文件的建立时间 
private $cache_folder_dir=null;//cookie文件夹的所在的完整路径 
     
public function __construct($cache_foldername,$cacher_time=100) 

   ob_start(); 
   $this->wroot_dir=$_SERVER['DOCUMENT_ROOT']; 
   $this->cacher_create_time=$cacher_time; 
   $this->cache_folder_dir=self::cache_dir($cache_foldername); 


//缓存文件夹的完整路径,此函数暂未过虑非法路径 
private function cache_dir($cache_folder) 

   $dir=$this->wroot_dir."/".$cache_folder; 
   return $dir;   

   
//读取页面缓存文件 
public function read_cache() 

   $filename=self::get_filename();   
   try {   
    if(file_exists($filename)) 
    { 
     self::get_cache();//输出缓存文件信息 
    }else 
    { 
     return false; 
    } 
   
   }catch(Exception $e){ 
    echo "缓存文件读取失败".$e; 
    exit(0); 
   } 

   
//返回缓存序列化数据 
public function get_data_cache_content($suffix='.html') 

   $content=null; 
   $file_name=self::get_filename($suffix);   
   if (file_exists($file_name)) 
   { 
    try {     
     $content=file_get_contents($file_name); 
    }catch (Exception $e) 
    { 
     exit(0); 
    }     
   }else 
   { 
    $content=""; 
    return false; 
   } 
   $content=unserialize($content); 
   return $content; 


//创建一个数据(序列化)缓存 
public function create_data_cache($content,$suffix='.html') 
    { 
    $filename=self::get_filename($suffix);     
    $content=serialize($content); 
    if($filename!="") 
    { 
       try{ 
        if(self::create_folder()) 
        { 
         @file_put_contents($filename,$content); 
         return true; 
        }else 
        { 
         echo "缓存文件夹创建失败"; 
         exit(0); 
        } 
       }catch (Exception $e) 
       { 
        echo "写缓存失败:".$e; 
        exit(0); 
       } 
       return true; 
    } 
    } 
   
//测试缓存文件夹是否存在 
private function exist_folder($foler) 

   $path=$this->cache_folder_dir; 
   if(file_exists($path)){ 
    return true; 
   }else { 
    return false; 
   }     


//建立一个新的文件夹 
private function create_folder() 

   $path=$this->cache_folder_dir;//缓存文件夹   
   if(!self::exist_folder($path)) 
   { 
    try{ 
     @mkdir($path,0777); 
     @chmod($path,0777);   
     return true; 
    }catch (Exception $e) 
    { 
     echo "文件夹创建失败".$e;     
     return false; 
    } 
    return false; 
   } 
   else 
   { 
    return true; 
   } 


//读取缓存文件 
private function get_cache() 
{   
   $content=self::get_cache_content();   
   if($content) 
    { 
       echo $content; 
       ob_end_flush(); 
       exit; 
    } 
    return false;   


//读取缓存文件中的内容 
private function get_cache_content() 

   $content=""; 
   $file_name=self::get_filename();     
   //有时间控制的方式 
   if (file_exists($file_name)&&((filemtime($file_name)+$this->cacher_create_time) < time())) 
   { 
    try {   
     [email=$content=@file_get_contents($file_name]$content=@file_get_contents($file_name[/email]); 
    }catch (Exception $e) 
    { 
     echo "缓存文件读取失败".$e; 
     exit(0); 
    }     
   }else 
   { 
    return false;   
   } 
   return $content; 


//返回文件的名字 
private function get_filename($suffix='.html') 

   $filename=$this->cache_folder_dir.'/'.md5($_SERVER['QUERY_STRING']).$suffix;   
   return $filename; 

     
//建立缓存文件 
    public function create_cache() 
    { 
    $filename=self::get_filename();     
    if($filename!="") 
    { 
       try{ 
        if(self::create_folder()) 
        { 
         if (file_exists($filename)&&((filemtime($file_name)+$this->cacher_create_time)<time())) 
      { 
              return true; 
      }else 
      { 
            @file_put_contents($filename,ob_get_contents()); 
      } 
        }else 
        { 
         echo "缓存文件夹创建失败"; 
         exit(0); 
        } 
       }catch (Exception $e) 
       { 
        echo "写缓存失败:".$e; 
        exit(); 
       } 
       return true; 
    } 
    } 
     
    // 取得缓存中的所有文件 
public function list_file() 

   $path=$this->cache_folder_dir;//站点缓存文件夹下的所有文件 
   $result = array(); 
   if ($handle = @opendir($path)) { 
       while (false !== ($file = @readdir($handle))) { 
        if($file!="." && $file!="..") { 
         $path1=$path."/".$file; 
         if(file_exists($path1)) 
         { 
          $result[]=$file; 
         }           
        } 
       } 
       closedir($handle); 
   } 
   return $result; 


//删除缓存中的所有文件 
public function del_file() 

   $path=$this->cache_folder_dir;//站点缓存文件夹下的所有文件   
   if ($handle = @opendir($path)) { 
       while (false !== ($file = @readdir($handle))) { 
        if($file!="." && $file!="..") { 
         $path1=$path."/".$file;         
         if(file_exists($path1)) 
         {         
          unlink($path1);         
         }                 
        } 
       }     
       closedir($handle); 
   } 
   return true;   


?>

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
jeff

3 篇文章

作家榜 »

  1. jeff 3 文章
  2. zero 1 文章
  3. Liang 1 文章
  4. ding 0 文章