先日、EC-CUBE2系のサイトを担当する案件があり、キャッシュの削除の仕方が分からなかったので色々と調べてみた。

キャッシュファイルはどうやら、/data/Smarty/templates_c/配下に作られる様子。

ただ、いちいちキャッシュファイルを手動で削除するのも面倒なので、一括で削除するPHPスクリプトを書いてみた。

<?php
// 削除対象のディレクトリを配列で指定
$cacheDir = array(
  '/data/cache/*',
  '/data/Smarty/templates_c/default/*',
);

// 削除しないファイル名を指定
$excludeFile = array(
  'mtb_constants.php',
);

foreach($cacheDir as $dir) {
  if($result = glob($dir)) {
    foreach($result as $filePath) {
      $file = basename($filePath);  
      if(!in_array($file, $excludeFile) && is_writable($filePath)) {
        if(unlink($filePath)) {
          echo $filePath."を削除しました\n";
        }
      }
    }
  }
}

補足しておくと、/data/cache/mtb_constants.phpには様々な定数設定がされているため、削除対象外として$excludeFileに指定している。

また、ドットで始まるファイル(.gitkeepなど)は$excludeFileに指定しなくても、このスクリプトで削除されることはない。