我的ZF2应用程序在短时间不活动后退出 - 比如60分钟左右 - 我无法理解原因。
我有一个'auth'对象,它是一个组成Zend\Session\Container
实例的单例。它的构造函数使用以下行创建容器:
$this->session = new Container('Auth');
auth对象具有login()
方法,该方法使用以下行存储当前用户:
$this->getSession()->userId = $user->id;
auth对象还有一个isLoggedIn()
方法,用于测试状态,如下所示:
if ($this->getSession()->userId) {
return true;
}
return false;
这一切都很简单。然而,当引导程序不时检查我们是否已登录时,它会返回false。为什么呢?
以下是会话管理器中配置的打印输出:
'cookie_domain' => '',
'cookie_httponly' => false,
'cookie_lifetime' => 604800,
'cookie_path' => '/',
'cookie_secure' => '',
'name' => 'MyApplication',
'remember_me_seconds' => 1209600,
'save_path' => '/var/lib/php5',
'use_cookies' => true,
如您所见,remember_me_seconds
和cookie_lifetime
分别设为2周和7天。还有其他一些我应该关注的环境吗?
我在某处读到默认保存处理程序'file'不支持并发。我的引导程序还会使用session container
打开new Container('Auth')
到auth命名空间。这可能与auth singleton中的Container冲突吗?我对此表示怀疑,因为问题很可能发生在高活动期间(而不是在一段时间不活动之后)。此外,我希望看到一个例外。
我是祸。
编辑:值得注意的是,会话ID在注销或重新登录时不会更改。
答案 0 :(得分:0)
会话可能无效的原因有很多。
始终检查以下几点:
尝试添加此
//NEW SECTION
'cache_expire' => 60 * 26, <-- this may help
'gc_maxlifetime' => 60 * 60 * 24, <-- or this