さて、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のおいしい食べ方さんにも言及されてますが、忘れた頃にハマりますねこれ・・・。