Нужно ли явно закрывать сеанс перед перенаправлением на другую страницу? - PullRequest
0 голосов
/ 27 января 2011

Должен ли я явно закрывать сеанс перед перенаправлением на другую страницу?

session_start();
if (isset($_SESSION['login']))
    $login = $_SESSION['login'];
else {
    // is session_write_close() necessary here?
    header('Location: /login');
    exit();
}

Есть ли способ сказать PHP закрыть сеанс, но также не мешать сохранению данных сеанса?(Что-то вроде session_discard_close())

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Очень трудно ответить на этот вопрос более полно, чем "нет".

Однако, если вы прочитаете страницу руководства PHP для session_write_close , вы увидите, что она гласит:

Данные сеанса обычно сохраняются после ваш сценарий завершен без нужно вызвать session_write_close (), но так как данные сеанса заблокированы предотвратить одновременную запись только одного Скрипт может работать на сессии в любой время. При совместном использовании фреймов с сеансами вы испытаете загрузка кадров по одному из-за этого замок. Вы можете сократить время необходимо загрузить все кадры по окончание сеанса, как только все внесены изменения в переменные сеанса.

Таким образом, в некоторых крайних случаях ответ «нет, но это может быть быстрее, если вы это сделаете».

1 голос
/ 27 января 2011

Нет, это не обязательно. Сессия будет автоматически закрыта в конце запроса. Из документации :

Данные сеанса обычно сохраняются после ваш сценарий завершен без нужно вызвать session_write_close (), но так как данные сеанса заблокированы предотвратить одновременную запись только одного Скрипт может работать на сессии в любой время.

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