首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend\Session\SessionManager和cookie_lifetime

Zend\Session\SessionManager和cookie_lifetime
EN

Stack Overflow用户
提问于 2013-05-15 14:23:09
回答 1查看 3.9K关注 0票数 5

我看到了一些奇怪和令人沮丧的ZF2会话和超时行为。

下面是我用来设置会话的代码:

代码语言:javascript
复制
    $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将被创建,但到期将是会话的结束。

如果我像这样修改代码:

代码语言:javascript
复制
    $sessionManager = new \Zend\Session\SessionManager();
    $sessionManager->rememberMe(31536000);
    $sessionManager->setConfig($sessionConfig);
    $session = new \Zend\Session\Container('MY_SESSION', $sessionManager);

cookie被创建,到期时间是一年之后。

但是,会话在30分钟左右就会到期,尽管cookie仍然存在。

我希望cookie和会话都能持续一年。如何在ZF2中完成这一任务?

EN

回答 1

Stack Overflow用户

发布于 2013-05-15 16:12:35

看起来这个问题与gc_maxlifetime选项的处理有关。在\Zend\Session\SaveHandler\MongoDB中,此值通过ini_get(‘session.gc_maxlifetime’)从PHP配置中获取;

我在\Zend\SessionManager中没有看到调用ini_set()的地方。

我认为,解决办法是做以下工作之一:

  1. 编辑php.ini并全局设置值
  2. 编辑.htaccess并添加php_value session.gc_maxlifetime
  3. 扩展\Zend\Session\SessionManager,并添加一个新方法,如果提供了ini_set()选项,则调用gc_maxlifetime ()。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16567673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档