Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Время жизни сессии


Автор: HackMan 2.7.2007, 21:25
Можно ли задать время жизни для сессии на стороне сервера таким образом, что бы через определённое время (например, 15 минут) сессия уничтожилась?

Автор: ilyalyu 2.7.2007, 22:38
что точно можно, это записывать в $_SESSION время последнего доступа, а потом проверять.

Автор: HackMan 2.7.2007, 23:48
Но ведь в этом случае прийдётся хранить данные о сессии, пока пользователь снова не зайдёт на сайт. Пусть он зайдёт через час, но получается, что только к тому времени сессия уничтожится. А это не очень хорошо...

Автор: mishaSL 3.7.2007, 12:22
Цитата(HackMan @  2.7.2007,  21:25 Найти цитируемый пост)
Можно ли задать время жизни для сессии на стороне сервера таким образом, что бы через определённое время (например, 15 минут) сессия уничтожилась?


Да, директивой http://ru2.php.net/session

Автор: HackMan 3.7.2007, 14:15
То есть задавать надо так?

Код

<?php
ini_set('session.gc_maxlifetime', $maxlifetime);
?>

Автор: sTa1kEr 3.7.2007, 14:26
Цитата(HackMan @  3.7.2007,  14:15 Найти цитируемый пост)
То есть задавать надо так?

Да, верно. Только эта директива не гарантирует, что спустя это время будут удалены все устаревшие сессии. Сам по себе PHP не может следить за жизнью сессий, он запускает уборщик мусора (garbage collection) перед запуском любого скрипта, по этому если, к примеру, за сутки не будет запущен ни один скрипт, то сессии так и будут лежать не смотря на lifetime.

Автор: HackMan 3.7.2007, 14:42
ага, спасибо, вроде разобрался  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)