web-dev-qa-db-fra.com

durée de vie de la session symfony2

J'ai eu un problème avec le composant de session symfony2. J'ai défini certaines données pour la session via le conteneur de session comme ceci:

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

Mais après un peu de temps (environ 15-20 minutes), la session s'est perdue.

Puis-je définir le paramètre de durée de vie de la session? La variante parfaite pour moi serait si je peux définir une certaine période de session en direct ... Quelqu'un peut-il s'il vous plaît aider?

29

Vous pouvez définir l'heure d'expiration de la session dans votre fichier de configuration sous la section framework. Le mien ressemble à ceci:

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

Vous pouvez modifier le framework.session.lifetime valeur à tout ce que vous souhaitez, en quelques secondes (par défaut, 3600 ou 1 heure).

Référence ici .

54
Problematic

Dans Symfony 2.3, je pense que la bonne réponse se trouve dans app/config/config.yml:

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600

GC (garbage collection) sera réinitialisé à chaque fois que le serveur est touché, ce qui signifie que si l'utilisateur est actif, il aura 3600 pour continuer à travailler. Le cookie_lifetime forcera l'utilisateur à se déconnecter dans sa limite. Dans cet exemple, l'utilisateur aura une heure pour être inactif et sera expulsé dans 2 heures.

35
Thomas Bennett

Pour travailler confortablement, vous pouvez définir dans un environnement de développement un cookie_lifetime to 0, cela signifie que le cookie expire lorsque le navigateur est fermé.

Fichier: config_dev.php

  framework:
        session:
            cookie_lifetime: 0
5
iarroyo