ウェブ上に散在している同様の問題の例はたくさんありますが、解決策のどれもがこの特定のバリエーションを修正していないようです。任意の提案をいただければ幸いです。Zend_SessionとZend_Log _Dbは両方ともページロードごとに2回データベースに書き込みます
通常、この問題は、ディスパッチャに複数のディスパッチプロセスが発生し、データベースの複数の行が発生するように、不正なリンクがファビコンやCSSファイルなどのリソースを要求しているために発生します。
この非常に単純な例ページのすべてのリンクが実際に指しているリソースに解決されていることを確認しました。次のように
セッションハンドラが設定され、次のように
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Session::setSaveHandler(new
Zend_Session_SaveHandler_DbTable($config->session->toArray()));
デシベルのログが設定され:
$writer = new Zend_Log_Writer_Db($db, $config->log->tableName,
$config->log->columnMap->toArray());
$logger = new Zend_Log($writer);
両方のオブジェクトが正しく設定されていると読んで、データベースとの書き込みをすることができます。すべてが2回しか起こらない。アプリケーションのどこにでもテストログメッセージを置くと、データベースに2回書き込まれます。セッションに格納されている、インデックスアクションの呼び出しごとに3つの変数をインクリメントすると、Zend_Registryオブジェクトを介して渡され、もう1つはindexActionにローカルで渡されます。セッション変数だけが2だけインクリメントされます。リクエストのうちページロードから放棄され、すべてのレスポンスコードが200または304(変更なし)のいずれかです。
すべてのヘッドリンクを無効にしようとしました。 レイアウトを完全に無効にしようとしました。 私はディスパッチャにすべてをローカライズして、ディスパッチを実行する前に終了しました。
すべての場合、追加の書き込み/増分が行われます。 考えていますか? ご協力いただきありがとうございます。