キャッシュクリアと同時にフィードキャッシュもクリア

部品の使い方や応用ノウハウ
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

キャッシュクリアと同時にフィードキャッシュもクリア

投稿記事by sama55 » 2011年4月22日(金) 18:18

ZeRoさんのPieXやsimplepieで外部サイトのフィードデータを取り込んでる場合の小ネタです。

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

注意1: unlinkを使ってます。globに与えるパスを間違えるとえらいこっちゃになりますのでバックアップ必須
注意2: CGI+suExec環境下では問題なく動くと思いますが、モジュールモードではどうでしょう・・・?