在Zend Framework 2中启动和运行会话的最佳方法是什么?我已经尝试session_start()
在我的index.php文件中进行设置,然后在任何自动加载器被引导之前运行,导致我的会话中存在不完整的对象.
在ZF1中,你可以通过在配置中添加一些选项来初始化会话,但是我对如何在ZF2中执行此操作感到茫然.
我看到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);
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,cookie将被创建,但过期是会话结束.
如果我改变这样的代码:
$sessionManager = new \Zend\Session\SessionManager();
$sessionManager->rememberMe(31536000);
$sessionManager->setConfig($sessionConfig);
$session = new \Zend\Session\Container('MY_SESSION', $sessionManager);
Run Code Online (Sandbox Code Playgroud)
cookie被创建,到期时间为一年.
但是,即使cookie仍然存在,会话仍会在30分钟左右后到期.
我想要的是cookie和会话持续一年.我如何在ZF2中实现这一目标?