【发布时间】:2013-05-15 14:23:09
【问题描述】:
我看到 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 和会话都持续一年。我如何在 ZF2 中做到这一点?
【问题讨论】:
-
使用
\Zend\Session\Config\SessionConfig,而不是StandardConfig -
当我使用具有与上述相同选项的 SessionConfig 时,不会写入 PHPSESSID cookie。我错过了什么?
-
以上选项表示会话
nameofmydomain?
标签: php zend-framework2 session-timeout