我的要求是,当用户代理更改会话应该销毁时,它应该启动新会话。但是如果在 start() 之前调用了destroy, Zend_Session::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());
例外:
未捕获的异常“Zend_Session_Exception”和消息“会话在此请求期间被显式销毁,不允许尝试重新启动。” 在库\Zend\Session.php:431
编辑:
原因是如果第二个 start() 命令已经在该请求中被调用,它会被静默忽略。我已经发布了一个问题,希望他们接受它..
if (self::$_sessionStarted) {
return; // already started
}