Срок службы сеанса 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