2010-10-12 30 views
0

heures et des heures Im trouver pourquoi un de mes plug-in ZEND parfois en cours d'exécution deux fois (dépend URL)Le plug-in ZEND est exécuté deux fois. Pourquoi ou comment le simuler?

Notez que mon plugin a des méthodes preDispatch et postDispatch et quand je le débogage du code, il fonctionne comme ceci:

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

puis à nouveau

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

Cela fait partie du code de démarrage

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

Avez-vous une suggestion comment cela pourrait se produire ou comment puis-je simuler cela.

Merci pour toute suggestion Cervenak

+2

Utilisez-vous _forward ou _redirect n'importe où dans vos contrôleurs? –

+0

Je parie que c'est l'aide d'action maléfique :) – takeshin

Répondre

0

boucle The dispatcher très probablement en cours d'exécution deux fois (le contrôleur est envoyé deux fois). Causes possibles:

  • en utilisant action aide de vue
  • appelant _forward
  • aide d'action redirecteur
  • appeler manuellement la boucle d'expédition dispatch()
  • avorté et a commencé à nouveau (par exemple, demande la réinitialisation params.)

De plus, t Ake un coup d'oeil à ce ZF flow diagram (de php-professionals.com hotlinked)

0

Une autre raison pourrait être un favicon.ico manquant :-)

Si l'Apache ne peux pas le trouver, il déclenche une deuxième demande.

2

Merci les gars pour beaucoup de conseils précieux.

regarder maintenant mon histoire :)

D'abord, je l'avais désactivé montrant des exceptions (paramètre False). Donc, je les allume pour voir la notification d'exception.

$frontController->throwExceptions(true); 

Puis j'ai vu que je n'ai pas téléchargé le contrôleur et les fichiers de vue. Après les avoir téléchargés, ZEND a commencé à fonctionner correctement.

Bon à savoir pour avoir cette direction activée pendant le débogage. Vous pourriez probablement économiser des heures.