Zend_Session non ti consente di destare e ricreare una session

Il mio requisito è, quando la session di modifica agente utente dovrebbe distruggere, e dovrebbe iniziare una nuova session. Ma Zend_Session :: start () lancia un'exception se destroy è stato chiamato prima di start ().

try { Zend_Session::start(); } catch (Zend_Session_Exception $e) { Zend_Session::destroy(true); Zend_Session::start(); // breaking here Zend_Session::regenerateId(); } Zend_Session::registerValidator(new Zend_Session_Validator_HttpUserAgent()); 

Eccezione:

Eccezione non rilevata 'Zend_Session_Exception' con messaggio 'La session è stata esplicitamente distrutta durante questa richiesta, il tentativo di riavviare non è consentito.' in libreria \ Zend \ Session.php: 431

MODIFICARE:
Il motivo è che il secondo command start () viene silenziosamente ignorato se è già stato chiamato in quella richiesta. Ho pubblicato un problema, spero che lo accetti ..

 if (self::$_sessionStarted) { return; // already started } 

Per favore votalo
http://framework.zend.com/issues/browse/ZF-11420

    Ragazzi, l'ho risolto da solo

     try { Zend_Session::start(); } catch (Zend_Session_Exception $e) { Zend_Session::destroy(true); $this->bootstrap('frontController'); $front = $this->getResource('frontController'); $front->setRequest(new Zend_Controller_Request_Http()); $front->setResponse(new Zend_Controller_Response_Http()); $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->gotoUrl($front->getRequest()->getRequestUri(),arrays('prependBase' => false)); } 

    Perché stai provando a riavviare la session? Basta redirect l'utente alla schermata di accesso dopo aver chiamato destroy()

    MODIFICARE:

    Zend_Session funziona in modo diverso rispetto alle normali sessioni di php e quindi perché è accettabile in vanilla PHP e non in Zend Framework.

    Il controllo colpevole è qui:

     if (self::$_sessionStarted && self::$_destroyed) { require_once 'Zend/Session/Exception.php'; throw new Zend_Session_Exception('The session was explicitly destroyed during this request, attempting to re-start is not allowed.'); } 

    Potresti provare a commentare questo frammento di codice in Zend_Session e vedere come si comport, anche se è molto probabile che ciò sia stato fatto per una ragione specifica.