model のキャッシュを削除するアクション: CakePHP

さて、CakePHP。

開発中は、debug を2 で開発すると思います。その状態で

開発中にDBのテーブルを増やしたりすると、どうも意味不明な挙動をすることがある。

いきなりMissing Database Table とか。いままでいけてたのに!とか。

あちこちのサイトで触れられていますが、app/tmp/cache/models内のモデルキャッシュをつかって

アクセスしようとするから、不整合が生じて起こるみたいですね。

手動のローカルサーバだといいんだけど、公開サーバだといちいちログインしたりせなあかんので、めんどくせぇ。

ということで、管理者用メニューに以下のアクションを作った。

/**
* モデルキャッシュ削除
*/
function delCache(){
$this->obAuth->lock(array(1));// 管理者権限のみ

$openDir =  TMP . ‘cache’ . DS . ‘models’ . DS;

e($openDir);

if ($handle = opendir($openDir)) {
while (false !== ($file = readdir($handle))) {
if (is_file($openDir.$file)) {
echo (unlink($openDir.$file)) ? “{$file}を削除しました<br>\n” :”{$file}の削除に失敗しました<br>\n”;
}
}
closedir($handle);

} else {
echo(“ディレクトリのオープンに失敗”);
}
die();
}

こいつにアクセスすればいつでもmodel cacheディレクトリが削除されて、再構築されます。

うーん、最初からつくっとけばよかったなー。危険はそうそうないとおもいますが、もちろん開発中だけの機能!

勝手にお世話になってる CakePHPのおいしい食べ方さんにも言及されてますが、忘れた頃にハマりますねこれ・・・。

http://cakephp.seesaa.net/article/109179479.html

CakePHP のおいしい食べ方: なぜか一部のフィールドがsave()で保存できない!

コメントを残す

メールアドレスが公開されることはありません。