当前位置:  开发笔记 > 编程语言 > 正文

symfony2会话生存期

如何解决《symfony2会话生存期》经验,为你挑选了3个好方法。

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

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

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

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



1> Problematic..:

您可以在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小时).

参考这里.


你确定framework.session.lifetime默认为一小时吗?你能指点我看到你在代码中发生的事情吗?在Symfony2的`NativeSessionStorage`中,我看到默认值来自PHP的`session_get_cookie_params()`,因此默认的PHP会话cookie生存期将为0(浏览器关闭时到期).此外,重要的是要注意即使您更改PHP会话cookie生命周期,我认为您还必须在PHP设置中更改`session.gc_maxlifetime`(因为默认为1440秒/ 24分钟).见http://tinyurl.com/6txls7n
当我发布这个答案时,Symfony2会话生存期值默认为3600.检查[配置参考](http://symfony.com/doc/current/reference/configuration/framework.html#full-default-configuration),看起来这已经增加到86400.看起来你是但是,对.我看到一条说明`session_get_cookie_params()`将覆盖传递的值.
哈,所以他们做到了.并查看[DI配置](https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php#L161)for FrameworkBundle ...`lifetime`已被弃用的`cookie_lifetime` ...看起来这里的文档已经过时了.

2> Thomas Benne..:

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

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600

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



3> iarroyo..:

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

档案:config_dev.php

  framework:
        session:
            cookie_lifetime: 0

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有