[Zend Framework]Zend_Db_Tableのメタキャッシュ時の不具合について
メタ情報をキャッシュする為によく、
-
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
とかで一括で全テーブルのメタキャッシュを有効にすると思います。
ですが、この方法で利用するとバージョン(再現したのは1.10.1)にもよるのかもしれませんが、以下のようなエラーが出力されてしまいます。
Failed saving metadata to metadataCache
将来すぐに修正していただけると思いますが、今回はZend_Db_Tableは元々継承させて使っていましたので、問題になっているメソッドを上書きして修正しました。
-
class My_Db_Table extends Zend_Db_Table_Abstract
-
{
-
protected function _setupMetadata()
-
{
-
try {
-
return parent::_setupMetadata();
-
} catch (Exception $e) {
-
// Unable to save metadata
-
$this->_metadataCache = null; // 2010-03-13追記
-
return self::_setupMetadata(); // 2010-03-13追記
-
}
-
}
-
}
これで今のところ安定しています。
訂正 2010-03-13
ご指摘いただきまして例外発生時に、_metadataCacheを初期化後リトライするように修正しました。この処理を入れないと、その後必要なメタ情報がないので結局エラーになっておりました。
そもそもなぜこのようなエラーが出るかは原因が不明なのですが、同じような症状に悩まれている方のご助力になれば幸いです。