Session symfony2会话生存期

Session symfony2会话生存期,session,symfony,Session,Symfony,我对symfony2会话组件有问题。我通过会话容器将一些数据设置为会话,如下所示: $sess = $this->get( 'session' ); $sess->set( 'some_key', 'some_value' ); 但过了一段时间(大约15-20分钟),会议就结束了 我可以设置会话生存时间参数吗?对我来说,完美的变体是,如果我可以设置会话的特定时间有效期…有人可以帮忙吗?您可以在框架下的配置文件中设置会话过期时间。我的看起来像这样: $sess = $this->

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

$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );
但过了一段时间(大约15-20分钟),会议就结束了


我可以设置会话生存时间参数吗?对我来说,完美的变体是,如果我可以设置会话的特定时间有效期…有人可以帮忙吗?

您可以在
框架下的配置文件中设置会话过期时间。我的看起来像这样:

$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );
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.liferate
值更改为您想要的任何值,以秒为单位(默认值为3600或1小时)


参考。

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

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600

每次点击服务器时,GC(垃圾收集)都会被重置,这意味着如果用户处于活动状态,他将有3600个垃圾继续工作。
cookie\u生存期将强制用户在其限制内注销。在本例中,用户将有一个小时处于非活动状态,并将在两个小时内被强制退出。

要舒适地工作,您可以在开发环境中将
cookie\u生存期设置为0
,这意味着浏览器关闭时cookie过期

文件:config_dev.php

  framework:
        session:
            cookie_lifetime: 0

您确定framework.session.lifetime默认为一小时吗?你能告诉我你在代码里看到了什么吗?在Symfony2的
NativeSessionStorage
中,我看到默认值来自PHP的
session\u get\u cookie\u params()
,因此默认的PHP会话cookie生存期将为0(在浏览器关闭时过期)。另外,需要注意的是,即使您更改了PHP会话cookie生存期,我认为您也必须更改PHP设置中的
session.gc_maxlifest
(因为默认值为1440秒/24分钟)。请参阅我发布此答案时默认为3600的Symfony2会话生存期值。检查一下,看起来这已经增加到86400了。看起来你是对的。我看到一条注释说,
session\u get\u cookie\u params()
将覆盖传递的值。再看看,默认情况下,会话生存期是
0
。哦,哇,打字错误。也是86400!我会给他们发一个补丁,看起来好像有人把它弄糟了。哈,他们就是这么做的。并查看FrameworkBundle的<代码>生存期
已被弃用于
cookie\u生存期
。。。这里的文档似乎已经过时了。是的,在master上已弃用(可能是针对Symfony2 2.1版?)。嗯<代码>会话获取cookie参数()
将覆盖传递的值。。。Symfony2 v2.0之后的另一个变化是,我可能不得不适应。:)