ob_start();
if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
$cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
}
キャッシュ_開始($_time, $dir);
// 以下は、cache_start メソッドとcache_end メソッドの間に配置される出力コンテンツです
ob_start();
/**
* @著者何明輝
* @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() はすべてのキャッシュ ファイルを削除します
*/
クラス Esj_Cache{
private $cache_folder=null;//キャッシュフォルダー
private $wroot_dir=null;//サイトディレクトリ
private $cacher_create_time=null;//キャッシャーファイルの作成時間
パブリック関数 __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
}
パブリック関数 read_cache()
{
{
を試してください
if(self::create_folder($this->cache_folder))
{
self::get_cache();//キャッシュファイル情報を出力する
}その他
{
echo "キャッシュフォルダーの作成に失敗しました!";
false を返します。
}
}catch(例外 $e){
エコー $e
false を返します。
}
}
//キャッシュフォルダーが存在するかどうかをテストします
プライベート関数exist_folder($foler)
{
if(file_exists($this->wroot_dir."/".$foler)){
true を返します。
} その他 {
false を返します。
}
}
// 新しいフォルダーを作成します
プライベート関数 create_folder($foler)
{
if(!self::exist_folder($foler))
{
試してください{
mkdir($this->wroot_dir."/".$foler,0777);
chmod($this->wroot_dir."/".$foler,0777);
true を返します。
}catch (例外 $e)
{
self::get_cache();//出力キャッシュ
false を返します。
}
false を返します。
}
それ以外は
{
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)
{
$content をエコーします。
ob_end_flush();
出る
}その他
{
echo "ファイルの読み取りに失敗しました"
出る
}
}
}
// ファイルの名前を返します
プライベート関数 get_filename()
{
$filename=$file_name=$this->wroot_dir.'/'.$this->cache_folder.'/'.md5($_SERVER['QUERY_STRING']).".html";
$ファイル名を返します
}
//キャッシュファイルを作成する
パブリック関数 create_cache()
{
$filename=self::get_filename();
if($ファイル名!="")
{
試してください{
file_put_contents($filename,ob_get_contents());
true を返します。
}catch (例外 $e)
{
echo "キャッシュの書き込みに失敗しました:" .$e;
終了();
}
true を返します。
}
}
// キャッシュ内のすべてのファイルを取得します
パブリック関数 list_file()
{
$path=$this->キャッシュフォルダー
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if($file!="." && $file!="..") {
$path1=$path."/".$ファイル
if(file_exists($path1))
{
$結果[]=$ファイル
}
}
}
クローズ済み($ハンドル)
}
$結果を返す
}
//キャッシュ内のすべてのファイルを削除します
パブリック関数 del_file()
{
$path=$this->キャッシュフォルダー
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if($file!="." && $file!="..") {
$path1=$path."/".$ファイル
if(file_exists($path1))
{
リンクを解除($path1);
}
}
}
クローズ済み($ハンドル)
}
true を返します。
}
}
?>
http://www.bkjia.com/PHPjc/941227.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/941227.html技術記事 PHPページのキャッシュ方法のまとめ. PHPページのキャッシュでは主にob_start()、ob_end_flush()、ob_get_contents()などのobシリーズの関数を使用しますが、より高度なキャッシュではこれらの関数は使用しません...
。