Как убить сессию в Symfony2? - PullRequest
       3

Как убить сессию в Symfony2?

5 голосов
/ 08 сентября 2011

Похоже, что Symfony2 ожидает ответа AJAX после запроса. Он не будет переходить к другой ссылке на той же странице, пока ответ не вернется.

Эта статья описывает проблему: http://garethmccumskey.blogspot.com/2009/10/php-session-write-locking-and-how-to.html

Я не могу найти решение в Symfony2.

Ответы [ 2 ]

14 голосов
/ 08 сентября 2011

После прочтения поста в блоге, на который вы ссылаетесь и читаете код классов Session и NativeSessionStorage, я попытался бы подражать поведению, упомянутому в посте блога, так:

$session = $this->get('session');

// Change the session attributes

$session->save();
session_write_close();

// Do database calls and other stuff.

Я не тестировал его, но он должен работать, как и ожидалось. Другое решение вашей проблемы - использовать хранилище сеансов, отличное от NativeSessionStorage, которое используется по умолчанию. Например, вы можете использовать хранилище базы данных, используя объект PdoSessionStorage. Это может помешать PHP использовать блокировку. См. Эту запись поваренной книги для получения дополнительной информации о том, как использовать хранилище базы данных для сеансов.

Но нет никакой гарантии, что система базы данных не будет составлять несколько запросов, если они обращаются к одной и той же строке, но это должно быть намного быстрее, чем с NativeSessionStorage.

С уважением,
Matt

1 голос
/ 20 июня 2016

Просто предупреждение для тех, кто использует встроенный веб-сервер PHP (поскольку я попал в ловушку, это может помочь другим):

Из документа PHP:

Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP будут зависать, если запрос заблокирован.

Это означает, что даже если вы закроете сеанс должным образом, вы все равно останетесь с одним соединением одновременно.

http://php.net/manual/en/features.commandline.webserver.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...