Cache_Lite のキャッシュを削除する

メモ:  Category:pear

Cache_Lite のキャッシュを削除するには、2つの方法が用意されています。

1つは、キャッシュファイルを個別に削除する方法と、条件付でディレクトリに保存されている複数のキャッシュファイルを対象に削除する方法です。個別に削除するには、remove関数を使用し、ディレクトリ単位での削除は、clean関数を 使用します。

Cache_Liteには、メモリキャッシングと呼ばれる配列でキャッシュを管理する方法もありますが、ここでの説明では対象としていません。

remove関数

remove関数は、キャッシュIDとグループ名で識別してキャッシュファイルを削除します。

グループ名は、デフォルトで’default’と設定されているためキャッシュIDとグループ名で一意に識別されます。

次の例は、少し無理がありますが使い方はこんな感じです。

<?php
require_once 'Cache/Lite.php';

$bCache = false;

$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 (!$bCache) {
    $objCache->remove($cacheId);
}

if ($cache = $objCache->get($cacheId)) {
    $awsBuff = $cache;
}
else{
    $awsBuff = file_get_contents($awsUrl);
    $objCache->save($awsBuff,$cacheId);
}
print $awsBuff;
?>

clean関数

clean関数は、ディレクトリのすべてのキャッシュファイル又は同一グループ名の複数キャッシュファイルを対称に削除できます。グループ名が指定されない場合、ディレクトリ内のすべてのキャッシュファイルが対象になります。

また、clean関数は次の条件を指定してキャッシュファイルを削除することができます。

  • old:生存期間より古いキャッシュファイルを対象とする
  • ingroup:指定されたグループ名のキャッシュファイルを対象とする
  • notgroup:指定されたグループ名以外のキャッシュファイルを対象とする
  • callback_myFunc:キャッシュファイル削除する前に指定の関数をコールします。関数がtrueを返した場合、キャッシュファイルを削除する。
<?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);

$objCache->clean(false,'old');

if ($cache = $objCache->get($cacheId)) {
    $awsBuff = $cache;
}
else{
    $awsBuff = file_get_contents($awsUrl);
    $objCache->save($awsBuff,$cacheId);
}
print $awsBuff;
?>

bluenote by BBB