Плагин ZEND работает дважды.Почему или как это смоделировать? - PullRequest
0 голосов
/ 12 октября 2010

Я часами нахожу, почему один из моих плагинов ZEND иногда работает дважды (зависит от 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());

Есть ли у вас какие-либо предположения о том, как это может произойти иликак я могу симулировать это.

Спасибо за любые предложения Червенак

Ответы [ 3 ]

2 голосов
/ 13 октября 2010

Спасибо, ребята, за много ценных советов.

Теперь посмотрите мою историю :)

Сначала я отключил показ исключений (параметр False).Поэтому я включаю их, чтобы увидеть уведомление об исключении.

$frontController->throwExceptions(true);

Чем я видел, что не загружал контроллер и не просматривал файлыПосле загрузки их ZEND начал работать покорно.

Полезно знать, что это направление включено во время отладки.Вы могли бы сэкономить часы.

0 голосов
/ 13 октября 2010

Другой причиной может быть отсутствующий favicon.ico: -)

Если Apache не может его найти, он запускает второй запрос.

0 голосов
/ 12 октября 2010

Цикл диспетчера , скорее всего, работает дважды (контроллер отправляется дважды).Возможные причины:

  • с использованием action помощник вида
  • вызов _forward
  • помощник действия перенаправителя
  • вручнуювызов dispatch()
  • цикл отправки прерван и запущен снова (например, сброс параметров запроса)

Также взгляните на эту блок-схему ZF (горячая ссылкаот php-professionals.com )

...