Срок службы сеанса symfony2

У меня возникла проблема с компонентом сеанса symfony2. Я установил некоторые данные для сеанса через контейнер сеанса следующим образом:

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

Но через некоторое время (около 15-20 минут) сеанс потерялся.

Могу ли я установить параметр времени жизни сеанса? Идеальный вариант для меня был бы, если бы я мог установить определенное время сеанса в реальном времени... Может ли кто-нибудь помочь?

Ответ 1

Вы можете установить время истечения срока действия сеанса в вашем файле конфигурации в разделе 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 час).

Ссылка здесь.

Ответ 2

В Symfony 2.3 я думаю, что правильный ответ найден в app/config/config.yml:

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600

GC (сбор мусора) будет reset при каждом ударе сервера, то есть если пользователь активен, ему будет 3600, чтобы продолжить работу. cookie_lifetime заставит пользователя выйти из строя. В этом примере у пользователя будет один час, чтобы быть неактивным, и он будет вытеснен через 2 часа.

Ответ 3

Чтобы работать удобно, вы можете установить в среде dev cookie_lifetime to 0, это означает, что cookie истекает, когда браузер закрыт.

Файл: config_dev.php

  framework:
        session:
            cookie_lifetime: 0