エントリー名 :

PHP PEARのCache_Liteでキャッシュする

PHP PEARのCache_Liteでキャッシュする

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()も必要ない。 配列などのデータを保存したい場合は、シリアライズしないとデータがファイルに書き込めない。

Cache_Liteで使えるパラメータ

キャッシングのときに設定できるパラメータで使いそうなものの一覧。

パラメータ
[デフォルトの値]説明
cacheDir
[/tmp/]キャッシュを保存するディレクトリ
lifeTime
[3600]
automaticCleaningFactor
[0]自動クリーニング。古いキャッシュをを削除するか。
readControlType
[crc32]読み込みの制御。他に、md5,strlenも設定可。md5,crc32,strlenの順に安全性は高いが、逆にパフォーマンスは低くなる。
automaticSerialization
[FALSE]自動的にデータのシリアライズをするか。TRUEで、保存データのシリアライズは必要なくなる。
hashedDirectoryLevel
[0]Cacheファイルをディレクトリ構造で保存するか。整数1につき、階層1つ。

Group化してキャッシュ

キャッシュは、グループで分けることもできる。

上の例で、$groupを指定すればいい。 デフォルトで省略した場合だと、$group="default"となっている。

$cache->get($id,$group));
$cache->save(serialize($savedata), $id,$group);

作成されるCacheファイルの名前は、$group+$idから決定される。

「"cacheDir" => "cache/$group/"」とか、「"hashedDirectoryLevel" => ~」で適当なディレクトリにCacheが作れる。

cleanとremoveでキャッシュの削除

僕は、使ったことはないけれど、 clean()とremove()でキャッシュを指定して削除できるみたいです。

$cache->remove($id,$group="default");
$cache->clean($group="default",$mode='ingroup');

$modeは「old」、「ingroup」、「notingroup」から指定できる。

  • 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が指定できます。

PHP PEAR 参考にした本

PEAR入門 PHP標準ライブラリを極める!
PEAR入門 PHP標準ライブラリを極める!

PEAR::DBとか、PEAR::Pager、PEAR::XML_Serializerとかも、いろいろ載っていた。 php5は、simplexmlがあるからいいのだけれど、 php4ではPEAR::XML_Unserializerが結構便利。


PHP PEARのCache_Liteでキャッシュするの前後の記事

カテゴリー [ メモ・覚え書き ] [ PHP ]



アマゾン(Amazon.co.jp) PHP

子どもが育つ魔法の言葉 (PHP文庫)

1. 本 子どもが育つ魔法の言葉 (PHP文庫)

[2003-09)]作者:ドロシー・ロー ノルト 。レーベル:PHP研究所 。製造:PHP研究所 。出版:PHP研究所 。発売:PHP研究所。関連:0~4歳 わが子の発達に合わせた1日30分間「語りかけ」育児

2022―これから10年、活躍できる人の条件 (PHPビジネス新書)

2. 本 2022―これから10年、活躍できる人の条件 (PHPビジネス新書)

[2012-01-19)]作者:神田 昌典 。レーベル:PHP研究所 。製造:PHP研究所 。出版:PHP研究所 。発売:PHP研究所。関連:10年後に食える仕事、食えない仕事

50歳を超えても30代に見える生き方 「人生100年計画」の行程表 (講談社プラスアルファ新書)

3. 本 50歳を超えても30代に見える生き方 「人生100年計画」の行程表 (講談社プラスアルファ新書)

[2011-10-21)]作者:南雲 吉則 。レーベル:講談社 。製造:講談社 。出版:講談社 。発売:講談社。関連:石垣食品 ごぼう茶 2g×15P

決断する力 (PHPビジネス新書)

4. 本 決断する力 (PHPビジネス新書)

[2012-03-17)]作者:猪瀬 直樹 。レーベル:PHP研究所 。製造:PHP研究所 。出版:PHP研究所 。発売:PHP研究所。関連:突破する力 (青春新書インテリジェンス)

道をひらく

5. 本 道をひらく

[1968-05)]   9歳からでっち奉公に出て、1代で松下グループを築き上げた立志伝中の人物であり、「経営の神様」と呼ばれた松下幸之助は、経営者としては稀有といえるほど多くの著...

目に見えないけれど大切なもの―あなたの心に安らぎと強さを (PHP文庫)

6. 本 目に見えないけれど大切なもの―あなたの心に安らぎと強さを (PHP文庫)

[2003-11)]作者:渡辺 和子 。レーベル:PHP研究所 。製造:PHP研究所 。出版:PHP研究所 。発売:PHP研究所。関連:置かれた場所で咲きなさい

赤ちゃんができる子宝マッサージ―ゆっくり、やさしくさするだけ

7. 本 赤ちゃんができる子宝マッサージ―ゆっくり、やさしくさするだけ

[2011-02)]作者:山田 光敏 。レーベル:PHP研究所 。製造:PHP研究所 。出版:PHP研究所 。発売:PHP研究所。関連:妊娠体質になる! 子宝ヨガ

2

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)



このエントリーのトラックバックURL:

アーカイブ

コメント

トラックバック

広告

あわせて読みたい

あわせて読みたい