我看到 ZF2 会话和超时的一些奇怪和令人沮丧的行为。
这是我用来设置会话的代码:
$sessionConfig = new \Zend\Session\Config\StandardConfig();
$sessionConfig->setOptions(array(
'cache_expire' => 525949,
'cookie_domain' => 'mydomain.com',
'cookie_lifetime' => 31536000,
'cookie_path' => '/',
'cookie_secure' => TRUE,
'gc_maxlifetime' => 31536000,
'name' => 'mydomain',
'remember_me_seconds' => 31536000,
'use_cookies' => TRUE,
));
$sessionManager = new \Zend\Session\SessionManager($sessionConfig);
$sessionManager->rememberMe(31536000);
$sessionManager->setSaveHandler(new \Zend\Session\SaveHandler\MongoDB($mongo, $options);
$session = new \Zend\Session\Container('MY_SESSION', $sessionManager);
当我执行此代码时,会创建 cookie,但到期是会话结束。
如果我像这样更改代码:
$sessionManager = new \Zend\Session\SessionManager();
$sessionManager->rememberMe(31536000);
$sessionManager->setConfig($sessionConfig);
$session = new \Zend\Session\Container('MY_SESSION', $sessionManager);
cookie 被创建,到期时间为一年后。
但是,会话仍然会在 30 分钟左右后过期,即使 cookie 仍然存在。
我想要的是让 cookie 和 session 都持续一年。我如何在 ZF2 中做到这一点?