PHPでキャッシュしたいときに、良くお世話になるPEARのCache_Liteの使い方メモ。使えるパラメータで知らないものが案外多かった。
PEARのパッケージマネージャが入っていれば、「pear install Cache_Lite」でインストールできる。 あるいは、Cache_Lite Downloadでファイルをダウンロードし、解凍してからサーバーの適当な場所にアップロードして、「require_once("~./Cache/Lite.php")」とすれば、 Cache_Liteが使えるようになる。
基本的な使い方は、
require_once("Cache/Lite.php");
$cacheoptions = array(
"cacheDir" => "cache/",
"lifeTime" => 3600,
"automaticCleaningFactor" => "20",
);
$cache = new Cache_Lite($cacheoptions);
//Cacheするデータを見分ける一意的な名前
$id="id_name";
if ($cacheData = $cache->get($id)) {
//Cacheしたファイルがあるとき
$cacheData = unserialize($cacheData);
}else{
//Cacheしたファイルがないとき
//キャッシュファイルにデータを保存する
$savedata="保存するデータ(配列なども可能)";
$cache->save(serialize($savedata), $id);
}
ディレクトリ「cache」を作って、書き込みの権限を与えておけば、 「cache」内にファイルが作成されるはず。
「$cacheoptions」でキャッシュの仕方を設定する。 「cacheDir」は、ファイルをキャッシュするデイレクトリ、 「lifeTime」はキャッシュしたファイルを保存する時間。
「automaticCleaningFactor」は、デフォルトで0が設定され、 期限の切れた古いキャッシュファイルはそのまま残る設定になっている。 1以上の整数を入れると、自動的に古いCacheが削除される (整数nを設定すると、n回に1回の割合でファイルの整理がされる。 数字が小さいほど、ファイルが削除されやすい)。
キャッシュするデータが単なる文字列であれば、unserialize()も、 serialize()も必要ない。 配列などのデータを保存したい場合は、シリアライズしないとデータがファイルに書き込めない。
キャッシングのときに設定できるパラメータで使いそうなものの一覧。
キャッシュは、グループで分けることもできる。
上の例で、$groupを指定すればいい。 デフォルトで省略した場合だと、$group="default"となっている。
$cache->get($id,$group));
$cache->save(serialize($savedata), $id,$group);
作成されるCacheファイルの名前は、$group+$idから決定される。
「"cacheDir" => "cache/$group/"」とか、「"hashedDirectoryLevel" => ~」で適当なディレクトリにCacheが作れる。
僕は、使ったことはないけれど、 clean()とremove()でキャッシュを指定して削除できるみたいです。
$cache->remove($id,$group="default");
$cache->clean($group="default",$mode='ingroup');
$modeは「old」、「ingroup」、「notingroup」から指定できる。
Cache/Lite.phpは、ページ内の一部のデータを保存するという感じですが、 ページの一部を保存するのに、Cache/Lite/Output.phpも用意されています。
require_once("Cache/Lite/Output.php");
$cacheoptions = array(
"cacheDir" => "cache/",
"lifeTime" => 3600,
"automaticCleaningFactor" => "20",
);
$cache = new Cache_Lite_Output($cacheoptions);
//Cacheするデータを見分ける一意的な名前
$id="id_name";
if (!$cache->start($id)) {
//キャッシュしたいページの部分
$savedata=date("G:i:s");
$cache->end();
}
start()は、$idと$groupが指定できます。
PEAR::DBとか、PEAR::Pager、PEAR::XML_Serializerとかも、いろいろ載っていた。 php5は、simplexmlがあるからいいのだけれど、 php4ではPEAR::XML_Unserializerが結構便利。
|
|
1.
|
|
|
2.
|
|
|
3.
|
|
|
4.
|
|
|
5.
|
|
|
6.
|
|
|
7.
|
このエントリーのトラックバックURL: