我看到了一些奇怪和令人沮丧的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中完成这一任务?
发布于 2013-05-15 16:12:35
看起来这个问题与gc_maxlifetime选项的处理有关。在\Zend\Session\SaveHandler\MongoDB中,此值通过ini_get(‘session.gc_maxlifetime’)从PHP配置中获取;
我在\Zend\SessionManager中没有看到调用ini_set()的地方。
我认为,解决办法是做以下工作之一:
https://stackoverflow.com/questions/16567673
复制相似问题