Cache_Lite のキャッシュを削除する[Pear::Cache_Lite]

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;
?>