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