我在主域上有一个遗留的PHP应用程序,它使用memcache作为我们会话的后端。这非常有效。我正在尝试在子域上添加一个新的Zend Framework应用程序,该子域可以共享在主域上创建的相同会话。
我在application.ini中配置了session和savehandler:
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
会话保存处理程序类(App_Session_SaveHanlder_Cache实现Zend_Session_SaveHandler_Interface并使用Zend_Cache工厂传入Libmemcached选项进行后端存储。
在我的bootstrap中,我将_init方法列为第一个调用会话引导程序的方法:
protected function _initForceSession()
{
$this->bootstrap('session');
Zend_Session::start();
}
我希望能够继续使用子域中主域中的现有会话(如果存在),并创建新会话(如果还没有)。
我能够在遗留应用程序中创建的新应用程序中成功读取会话ID。但是,我无法让新应用程序实际读取会话本身。
我尝试从新应用程序直接读取memcache(绕过会话),我能够以这种方式获取会话数据。
我在这里缺少什么?