Cache_Lite でデータをキャッシュする
PearにCache_Liteと呼ばれるキャッシュを管理するパッケージがあります。
キャッシュとは、取得したデータなどを一時的に保存しておき、それを再利用することで 処理時間を短縮する技術です。
ここでは、 Cache_Lite 1.5.2 で取得したxmlデータをキャッシュしてみます。 Cache_Lite(lite.php)は、Pearのインストーラーでインストールするか、任意のディレクトリに保存しrequireすることで使用できます。
Amazon Web サービスのRESTを利用して取得したxmlデータをキャッシュします。 同じ検索であれば、キャッシュを使用することでAmazon側のサーバ負荷の軽減や検索結果の処理スピードの向上が期待できます。
<?php
require_once 'Cache/Lite.php';
$awsUrl = 'http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService';
$awsUrl .= '&SubscriptionId=「Amazonで取得したID」';
$awsUrl .= '&Operation=ItemSearch&SearchIndex=Music&Artist=Doobie%20Brothers';
$awsUrl .= '&ResponseGroup=Medium';
$cacheOptions = array (
'cacheDir' => './tmp/',
'lifeTime' => '30',
);
$cacheId = $awsUrl;
$objCache = new Cache_Lite($cacheOptions);
if ($cache = $objCache->get($cacheId)) {
$awsBuff = $cache;
}
else{
$awsBuff = file_get_contents($awsUrl);
$objCache->save($awsBuff,$cacheId);
}
print $awsBuff;
?>
上記例では、tmpディレクトリにキャッシュファイルが作成されます。 $cacheOptions にキャッシュの保存先とキャッシュの有効時間を指定します。
get メンバ関数は、キャッシュIDと呼ばれるキャッシュを管理する値をもとにキャッシュが作成されているかを確認します。キャッシュが存在する場合、そのキャッシュの内容を返します。 キャッシュが存在しない場合、 false を返します。
キャッシュを保存するには、 save メンバ関数を使用します。 キャッシュIDは、省略できるようですが気持ちよくないので明示的に指定します。
キャッシュファイルのファイル名は、 **「cache_ + グループ + キャッシュID」** として保存されます。 グループとキャッシュIDは、デフォルトでMD5ハッシュ値が使用されます。