実際の運用ではキャッシュが広く使われており、サーバーデータベースへのアクセスを軽減し、動作速度を向上させることができます。現在、多くの CMS コンテンツ管理システムは、システム運用の効率を向上させるためにキャッシュ メカニズムを頻繁に使用しています。以下はよく書かれたキャッシュクラスです。キャッシュの仕組みと書き方を参照してください。
cache.phpのコードは次のとおりです:
[php] plaincopy を表示
-
/* -
ユーザーが事前に定義する必要がある定数: -
_CachePath_ テンプレートのキャッシュ パス -
_CacheEnable_ 自動キャッシュ メカニズムが有効であるか、未定義または空であり、自動キャッシュ メカニズムがオフになっていることを示します -
_ReCacheTime_ 自動再キャッシュ間隔 (秒単位)、未定義または空で、自動再キャッシュがオフになっていることを示します -
*/-
-
クラスキャッシュ -
{ -
var $キャッシュファイル -
var $キャッシュファイル変数 -
-
関数キャッシュ() -
-
//現在のページのキャッシュ グループ ファイル名 $this->cachefilevar とファイル名 $this->cachefile を生成します
-
//動的ページのパラメーターは異なり、対応するキャッシュファイルも異なりますが、各動的ページのすべてのキャッシュファイルは同じファイル名を持っていますが、拡張機能は異なります
$s=array(".","/");$r=array("_","");
-
$this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];
-
$this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);
} -
-
// 現在のページ/モジュールのキャッシュを削除します -
関数削除() -
-
// 現在のページのキャッシュを削除します
-
$d = dir(_CachePath_);
$strlen=strlen($this->cachefilevar);
-
//現在のページのすべてのキャッシュ ファイル グループを返す
-
-
If (substr($entry,0,$strlen)==$this->cachefilevar)
-
If (!unlink(_CachePath_."/".$entry)) {echo "キャッシュ ディレクトリに書き込めません";exit;} -
-
}
-
-
//キャッシュされているかどうか、またキャッシュする必要があるかどうかを判断します
-
関数チェック()
-
//キャッシュ更新間隔が設定されている場合 _ReCacheTime_ -
(_ReCacheTime_+0>0) の場合 -
-
// 現在のページのキャッシュの最終更新時刻に戻ります
-
$var=@file(_CachePath_."/".$this->cachefilevar);
//更新時間が更新間隔を超えた場合、キャッシュファイルを削除
-
if(time() - $ var> _recachetime_)
-
$this->delete();
-
//現在のページのキャッシュに戻ります-
$file=_CachePath_."/".$this->cachefile;
-
// 現在のページのキャッシュが存在するかどうか、およびキャッシュ機能がオンになっているかどうかを判断します
-
return (file_exists($file) と _CacheEnable_ と !$ischange);
} -
-
// リードキャッシュ -
関数 read() -
-
//現在のページのキャッシュに戻ります
-
$file=_CachePath_."/".$this->cachefile;
//キャッシュファイルの内容を読み取ります
-
if (_CacheEnable_) return readfile($file);
それ以外の場合は false を返します。
-
-
//キャッシュを生成する -
関数書き込み($output) -
-
//現在のページのキャッシュに戻る
-
$file=_CachePath_."/".$this->cachefile;
//キャッシュ機能がオンの場合-
if (_CacheEnable_)
-
//出力コンテンツをキャッシュ ファイルに書き込みます
-
$fp=@fopen($file,'w');
if (!@fputs($fp,$output)) {echo "テンプレート キャッシュの書き込みに失敗しました";exit;}
-
@fclose($fp);
//キャッシュ更新間隔が設定されている場合 _ReCacheTime_ -
if (_ReCacheTime_+0>0)
-
// 現在のページキャッシュの最終更新時刻を更新します -
$file=_CachePath_."/".$this->cachefilevar;
-
$fp=@fopen($file,'w');
if(!@fwrite($ fp、time())){echo "cache directoryは";}
-
@fclose($fp);
-
-
}
-
?>
-
-
-
-
クラスの使用法:
- [php]
plaincopy を表示
Define("_CachePath_","./cache/");
定義("_CacheEnable_","1");
定義("_ReCacheTime_","43200");
include('cache.php');
$cache=新しいキャッシュ();
If ($cache->check())
-
$template=$cache->read();
}-
その他 -
-
ob_start();
ob_implicit_flush(0);
-
?>
-
ページのコンテンツ。 。 。 。
-
-
$template = ob_get_contents();
$cache->write($template);
-
?>-
-
-
-
- http://www.bkjia.com/PHPjc/750358.html
- www.bkjia.com
- true
- http://www.bkjia.com/PHPjc/750358.html
- 技術記事
- 実際の運用ではキャッシュが広く使われており、サーバーデータベースへのアクセスを軽減し、動作速度を向上させることができます。現在、多くの CMS コンテンツ管理システムは、システムを改善するためにキャッシュ メカニズムを頻繁に使用しています...
-
-