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?
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 .
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.
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