キャッシュクリアと同時にフィードキャッシュもクリア
Posted: 2011年4月22日(金) 18:18
ZeRoさんのPieXやsimplepieで外部サイトのフィードデータを取り込んでる場合の小ネタです。
simplepieのキャッシュ生存期間はデフォルト1時間(3600秒)かと思います(生存期間は外部から変更できます)。プログラムやフィード元データの変更と同時にリアルに表示したいケース(サイトの初期制作シーンやデバッグ中など)では、「MODxのキャッシュクリア」と同時にフィードデータを消せれば作業効率が上がります。MODxのプラグインをよく使う方にとっては目新しいコードではありませんが、OnCacheUpdateイベントを利用すればサクっと消せます。
プラグイン名: ClearFeedCache
説明: MODxのファイルキャッシュのクリアと同時にフィードキャッシュもクリアします。
システムイベント: OnCacheUpdate
プラグインコード:
注意1: unlinkを使ってます。globに与えるパスを間違えるとえらいこっちゃになりますのでバックアップ必須。
注意2: CGI+suExec環境下では問題なく動くと思いますが、モジュールモードではどうでしょう・・・?
simplepieのキャッシュ生存期間はデフォルト1時間(3600秒)かと思います(生存期間は外部から変更できます)。プログラムやフィード元データの変更と同時にリアルに表示したいケース(サイトの初期制作シーンやデバッグ中など)では、「MODxのキャッシュクリア」と同時にフィードデータを消せれば作業効率が上がります。MODxのプラグインをよく使う方にとっては目新しいコードではありませんが、OnCacheUpdateイベントを利用すればサクっと消せます。
プラグイン名: ClearFeedCache
説明: MODxのファイルキャッシュのクリアと同時にフィードキャッシュもクリアします。
システムイベント: OnCacheUpdate
プラグインコード:
コード: 全て選択
$e = &$modx->event;
switch ($e->name) {
case 'OnCacheUpdate':
// コアのrssフォルダ配下のspcファイルを消す
foreach (glob($modx->config['rb_base_dir'] . 'cache/rss/*.spc') as $file) {
unlink($file);
}
// 自分はGoogleEventsを導入してるのでこっちも消す
foreach (glob($modx->config['rb_base_dir'] . 'snippets/GoogleEvents/cache/*.spc') as $file) {
unlink($file);
}
break;
}
注意2: CGI+suExec環境下では問題なく動くと思いますが、モジュールモードではどうでしょう・・・?