Spec-Zone.ru › Symfony 2.7

SaveSessionListener

class SaveSessionListener implements EventSubscriberInterface

Сохраняет сессию, если она всё ещё открыта, перед отправкой ответа/заголовков.

Это гарантирует несколько вещей в случае, если разработчик не сохранил сессию явно:

  • Если используется обработчик сохранения сессии без блокировки, это гарантирует, что данные будут доступны при следующем запросе, например, после перенаправления. Автосохранение PHP в конце сценария через sessionregistershutdown выполняется после fastcgifinishrequest. Таким образом, в этом случае данные могут отсутствовать при следующем запросе, потому что они могут не сохраняться в момент обработки нового запроса.
  • Обработчик сохранения с блокировкой (например, системный 'files') обходит проблемы с одновременным доступом, подобные описанным выше. Но сохраняя сессию перед длительными операциями в событии terminate, мы гарантируем, что сессия не будет заблокирована дольше, чем необходимо.
  • При перегенерации идентификатора сессии в механизме сессий PHP не используется блокировка. См. https://bugs.php.net/bug.php?id=61470 для обсуждения. Поэтому в этом случае сессия должна быть сохранена перед отправкой заголовков с новым идентификатором сессии. В противном случае данные сессии могут снова потеряться для одновременных запросов с новым идентификатором. Одним из результатов может быть выход из системы после только что выполненного входа.

Этот обработчик должен выполняться как один из последних обработчиков, чтобы предыдущие обработчики могли продолжать работать с открытой сессией. Это предотвращает издержки на её перезапуск. Обработчики, выполняющиеся после закрытия сессии, могут по-прежнему работать с сессией обычным образом, потому что реализация сессии Symfony запускает сессию по требованию. Поэтому запись в неё после сохранения просто перезапустит её.

Methods

onKernelResponse(FilterResponseEvent $event)
static array getSubscribedEvents()

Возвращает массив имён событий, на которые этот подписчик хочет подписаться.

Details

onKernelResponse(FilterResponseEvent $event)

Parameters

FilterResponseEvent $event

static array getSubscribedEvents()

Возвращает массив имён событий, на которые этот подписчик хочет подписаться.

Ключи массива — имена событий, а значение может быть:

  • Имя метода для вызова (приоритет по умолчанию 0)
  • Массив, состоящий из имени метода для вызова и приоритета
  • Массив массивов, состоящий из имён методов для вызова и соответствующих приоритетов, или 0, если не задано

Например:

  • array('eventName' => 'methodName')
  • array('eventName' => array('methodName', $priority))
  • array('eventName' => array(array('methodName1', $priority), array('methodName2')))

Return Value

array Имена событий для подписки

© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/2.7/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API