我在Zend Session命名空间中存储了相当多的数据,我想知道在我的类中引用它的最有效方法是什么。
目前,我的构造函数使用$this->_storage = new Zend_Session_Namespace('products');
之类的行设置访问权限。稍后,当我需要访问命名空间中的数据时,我会使用$this->_storage->varname = $var;
或$this->_storage->unsetAll();
这是否意味着每次读取或写入会话时都存在磁盘活动?或者是在请求开始时读取,并在结束时写入?
如果在单个请求的持续时间内有多个磁盘访问,是否可以轻松解决它?
答案 0 :(得分:1)
来自php man page on Session usage
会话遵循简单的工作流程。当会话启动时,PHP将使用传递的ID(通常来自会话cookie)检索现有会话,或者如果没有传递会话,它将创建新会话。在会话开始后,PHP将使用任何会话数据填充$ _SESSION超全局。当PHP关闭时,它将自动获取$ _SESSION超全局的内容,对其进行序列化,并使用会话保存处理程序将其发送到存储。
所以,回答你的问题,这意味着在会话开始时有一次读取,在会话关闭时有一次写入,介于两者之间,$_SESSION
超级全局基本上保存在内存中。