0

私のZENDプラグインの1つが時々 2回実行される理由を見つけるのに何時間も費やしています(URLによって異なります)

私のプラグインには preDispatch メソッドと postDispatch メソッドがあり、コードをデバッグすると次のように動作することに注意してください。

MY_Plugin:preDispatch (echo $_SESSION['DBG'] has value)
MY_Plugin:postDispatch (unset($_SESSION['DBG']))

そしてまた

MY_Plugin:preDispatch (echo $_SESSION['DBG'] not exist)
MY_Plugin:postDispatch

これはブートストラップ コードの一部です

$_SESSION['DBG'] = 'value';
$MYrouter = new MY_Router_MyRouter();
$frontController->setRouter($MYrouter);
$frontController->registerPlugin(new MY_Plugin());

これがどのように発生するか、またはこれをどのようにシミュレートできるかについての提案はありますか.

ご提案ありがとうございます

4

3 に答える 3

2

貴重なヒントをたくさんありがとう。

今、私の話を見てください:)

まず、例外の表示をオフにしました (パラメーター False)。そのため、それらをオンにして、例外通知を表示します。

$frontController->throwExceptions(true);

コントローラーとビューファイルをアップロードしていないことがわかりました。それらをアップロードした後、ZEND は正しく動作し始めました。

デバッグ中にこの方向をオンに設定しておくと便利です。おそらく何時間も節約できます。

于 2010-10-13T11:40:30.580 に答える
0

別の理由として、favicon.ico の欠落が考えられます :-)

Apache がそれを見つけられない場合、2 番目の要求を起動します。

于 2010-10-13T05:24:23.663 に答える
0

ほとんどの場合、ディスパッチャーループは 2 回実行されます (コントローラーは 2 回ディスパッチされます)。考えられる原因:

  • actionビューヘルパーの使用
  • 呼び出し_forward
  • リダイレクタ アクション ヘルパー
  • 手動で呼び出すdispatch()
  • ディスパッチ ループが中止され、再び開始された (例: リクエスト パラメータのリセット)

また、このZF フロー図(php-professionals.com からホットリンク)もご覧ください。

于 2010-10-12T18:13:13.497 に答える