Zend Framework 内存缓存会话保存处理程序和使用现有会话

Jer*_*cks 5 session memcached zend-framework libmemcache

我在主域上有一个遗留的 PHP 应用程序,它使用 memcache 作为我们会话的后端。这很好用。我正在尝试在子域上添加一个新的 Zend Framework 应用程序,该应用程序可以共享在主域上创建的相同会话。

我在 application.ini 中配置了会话和保存处理程序:

resources.session.saveHandler.class = "App_Session_SaveHandler_Cache"
resources.session.saveHandler.options.type = "Libmemcached"
resources.session.saveHandler.options.maxlifetime = 300
resources.session.saveHandler.options.front.lifetime = 300
resources.session.saveHandler.options.front.automatic_serialization = true
resources.session.saveHandler.options.back.servers.0.host = "127.0.0.1"
resources.session.saveHandler.options.back.servers.0.port = 11211
resources.session.saveHandler.options.back.servers.0.persistent = true
resources.session.saveHandler.options.back.servers.0.status = true
resources.session.saveHandler.options.back.servers.1.host = "127.0.0.2"
resources.session.saveHandler.options.back.servers.1.port = 11211
resources.session.saveHandler.options.back.servers.1.persistent = true
resources.session.saveHandler.options.back.servers.1.status = true
Run Code Online (Sandbox Code Playgroud)

会话保存处理程序类(App_Session_SaveHanlder_Cache 实现 Zend_Session_SaveHandler_Interface 并使用 Zend_Cache 工厂传递后端存储的 Libmemcached 选项。

在我的引导程序中,我将 _init 方法列为调用会话引导程序的第一个方法:

protected function _initForceSession()
{   
    $this->bootstrap('session');
    Zend_Session::start();
}
Run Code Online (Sandbox Code Playgroud)

我希望能够继续使用来自我的子域中主域的现有会话(如果它存在)并创建一个新会话(如果那里还没有)。

我能够在旧应用程序中创建的新应用程序中成功读取会话 ID。但是,我无法让新应用程序在会话本身中实际读取。

我尝试从新应用程序直接读取内存缓存(绕过会话),我能够以这种方式获取会话数据。

我在这里缺少什么?