Php 一旦启动,更改会话ID

Php 一旦启动,更改会话ID,php,session,zend-framework,Php,Session,Zend Framework,我使用的是Zend framework 1,我需要在运行时使用预定义的前缀更改会话id,但是我收到以下错误“会话已启动。必须先设置会话id”。问题是,即使在调用destroy和writeclose之后,会话状态仍然保持为started。我还尝试使用php方法unset&destroy,但仍然存在相同的问题 $oldSession = new Zend_Session_Namespace(); Zend_Session::destroy(); Zend_Session::writeClose();

我使用的是Zend framework 1,我需要在运行时使用预定义的前缀更改会话id,但是我收到以下错误“会话已启动。必须先设置会话id”。问题是,即使在调用destroy和writeclose之后,会话状态仍然保持为started。我还尝试使用php方法unset&destroy,但仍然存在相同的问题

$oldSession = new Zend_Session_Namespace();
Zend_Session::destroy();
Zend_Session::writeClose();

$sessId = "dskjfghdsjfhsdkf"; //Random hash
Zend_Session::setId("myprefix".$sessId);

$newSession = new Zend_Session_Namespace();
foreach($oldSession as $idx => $data){
    $newSession->$idx = $data;
}

看来这是不可能的

Zend_Session.php中的代码片段:

 if (!self::$_unitTestEnabled && defined('SID')) {
        /** @see Zend_Session_Exception */
        require_once 'Zend/Session/Exception.php';
        throw new Zend_Session_Exception('The session has already been started.  The session id must be set first.');
    }

我知道这是问题的根源,但我的问题是如何回避它。IE:强制关闭/销毁会话。