Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > session_abort(), session_reset() |
Автор: linuxoid 30.7.2015, 21:02 | ||||||||
Здравствуйте, уважаемые коллеги! Пытаюсь для себя понять, в чем заключается практический смысл (а твк же принцип работы) функций session_abort() и session_reset(), которые появились в PHP 5.6. В http://php.net/manual/en/function.session-abort.php говорится, что session_abort() сбрасывает изменения в массиве сессии и заканчивает сессию. Т.е. по вызову этой функции сессия заканчивается без сохранения данных. Таким образом в данных сессии остаются оригинальные значения. Каков практический смысл вышесказанного? Т.е. что значит, что значения сбрасываются и где именено? Что значит, что сессия заканчивается без сохранения данных и где остаются оригинальные значения? Для чего вообще может понадобиться что-то подобное? Вот пример:
Вывод:
Судя по аутпуту, статус сессии поменялся на PHP_SESSION_NONE. $_SESSION переменная доступна и значение в ней 'foo2', а я думал будет сброс и значение будет предыдущее, т.е. 'foo'. Это первый вопрос. А второй - для чего это может быть практически применимо (т.е., что после PHP_SESSION_NONE, переменная $_SESSION всё еще содержит значения сессии). Следующая функция session_reset() так же вызывает вопросы. Пример:
Я думал, что в данном случае после вызова session_reset() будет доступна $_SESSION['test'], но вот какой получается вывод для данного примера:
Т.е. сессия хоть и активна, но данные полностью пропали. В то же время http://php.net/manual/en/function.session-reset.php говорит, что session_reset() реинициализирует сессию используя оригинальные значения, которые хранились в хранилище сессии (session storage). Эта функция требует активную сессию и сбрасывает изменения в $_SESSION. Не понятно, что за хранилище и что за оригинальные значения. Я думал, что это файл сессии, а значения - это предыдущие установленные (как в моем примере выше), но аутпут говорит другое. Так же хотелось бы конкретный пример, для чего данная функция может быть применена. Спасибо. P.S. У меня PHP 5.6.3. |
Автор: linuxoid 31.7.2015, 12:31 |
"содержимое $_SESSION при закрытой сессии может быть любым и к сессии не относится.". Понял. "никакой дополнительной обработки, когда вы пишете/читаете $_SESSION, не производится". Понял. Спасибо! Разобрался. Я просто делал reset тут же, пока скрипт не завершился, поэтому он брал данные из пустого файла. Всё, что нужно было - дождаться завершения или использовать session_write_close() перед session_reset(). |