ob_start(); /** * @author He Minghui * @copyright 2009-3-13 * @param string $cache_folder キャッシュ フォルダー * @param int $cache_create_time ファイルのキャッシュ時間 * @example $cache=new Esj_Cache('./_cache', 100) * @example $cache->read_cache() はキャッシュを読み取って出力します * @example $cache->creatre_cache() はキャッシュ ファイルを作成します (ファイルの最後に置きます) * @example $cache->list_file() はすべてのキャッシュ ファイルのリストを返します * @example $cache->del_file() はすべてのキャッシュ ファイルを削除します */ class Esj_Cache { private $cache_folder=null;//キャッシュフォルダー private $wroot_dir=null;//サイトディレクトリ private $cacher_create_time=null;//キャッシュファイル作成時間 public function __construct($cache_foldername,$cacher_time=100) { ob_start(); $this->wroot_dir=$_SERVER['DOCUMENT_ROOT']; $this->cache_folder=$cache_foldername; $this->cacher_create_time=$cacher_time; }
public function read_cache () { try { if(self::create_folder($this->cache_folder)) { self::get_cache();//キャッシュファイル情報を出力 }else { echo "cacheフォルダーの作成に失敗しました!"; return false; }
}catch(Exception $e){ echo $e; return false; } }
//キャッシュフォルダーが存在するかテスト private functionexist_folder( $ foler) { if(file_exists($this->wroot_dir."/".$foler)){ return true; }else { return false; } }
//新しいファイルを作成するClip プライベート関数 create_folder($foler) { if(!self::exist_folder($foler)) { try{ mkdir($this->wroot_dir."/".$foler,0777); chmod($this->wroot_dir."/".$foler,0777); return true; }catch (Exception $e) { self::get_cache();//出力キャッシュ return false; } return false; } else { return true; } }
//キャッシュファイルを読み取る プライベート関数get_cache() { $file_name=self::get_filename(); if (file_exists ( $file_name)&&((filemtime($file_name)+$this->cacher_create_time) > time())) { $content=file_get_contents($file_name); if($content) { echo $ content ; ob_end_flush(); exit; }else { echo "ファイルの読み取りに失敗しました"; exit;
}
} }
//ファイル名を返す プライベート関数get_filename() { $filename=$file_name=$this->wroot_dir.'/'.$this->cache_folder.'/'.md5($_SERVER['QUERY_STRING']).".html"; return $filename ; }
//キャッシュファイルを作成します public function create_cache() { $filename=self::get_filename(); if($filename!="") { try{ file_put_contents($filename) 、ob_get_contents()); return true; }catch (Exception $e) { echo "書き込みキャッシュに失敗しました:".$e; exit(); } return true; } }
/ / キャッシュ内のすべてのファイルを取得します public function list_file() { $path=$this->cache_folder; 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; if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if($ファイル !="." && $file!="..") { $path1=$path."/".$file; if(file_exists($path1)) { unlink($path1); } } } closedir($handle); } return true; }
}
?>
|