symfony2会话生存期

时间:2011-05-09 07:20:20

标签: session symfony

我遇到了symfony2会话组件的问题。我通过会话容器将一些数据设置为会话,如下所示:

$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );

但是经过一段时间(大约15-20分钟)后,会话就丢失了。

我可以设置会话生存时间参数吗?对我而言,完美的变体就是如果我可以设定一定的会话时间......有人可以帮忙吗?

3 个答案:

答案 0 :(得分:52)

您可以在framework部分下的配置文件中设置会话到期时间。我看起来像这样:

config.yml

framework:
  secret:        %secret%
  charset:       UTF-8
  error_handler: null
  csrf_protection:
      enabled: true
  router:        { resource: "%kernel.root_dir%/config/routing.yml" }
  validation:    { enabled: true, annotations: true }
  templating:    { engines: ['twig'] } #assets_version: SomeVersionScheme
  session:
      default_locale: %locale%
      cookie_lifetime: 3600 // was "lifetime" but deprecated
      auto_start:     true

您可以将framework.session.lifetime值更改为您想要的任何值,以秒为单位(默认为3600或1小时)。

参考here

答案 1 :(得分:33)

在Symfony 2.3中我认为正确的答案可以在app / config / config.yml中找到:

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600
每次服务器命中时都会重置GC(垃圾收集),这意味着如果用户处于活动状态,他将有3600继续工作。 cookie_lifetime将强制用户注销其限制。在此示例中,用户将有一个小时处于非活动状态,并将在2小时内强制退出。

答案 2 :(得分:4)

为了舒适地工作,您可以在开发环境中设置cookie_lifetime to 0,这意味着当浏览器关闭时cookie将过期。

文件:config_dev.php

  framework:
        session:
            cookie_lifetime: 0