Управление сессиями
- Введение
- Установка и настройка
- Предопределенные константы
- Примеры
- Отслеживание прогресса загрузки файлов с помощью сессий
- Безопасность сессий
- Функции для работы с сессиями
- session_abort — Discard session array changes and finish session
- session_cache_expire — Return current cache expire
- session_cache_limiter — Get and/or set the current cache limiter
- session_commit — Псевдоним session_write_close
- session_create_id — Create new session id
- session_decode — Decodes session data from a session encoded string
- session_destroy — Destroys all data registered to a session
- session_encode — Encodes the current session data as a session encoded string
- session_gc — Perform session data garbage collection
- session_get_cookie_params — Возвращает параметры cookie сессии
- session_id — Get and/or set the current session id
- session_is_registered — Определяет, зарегистрирована ли глобальная переменная в сессии
- session_module_name — Возвращает и/или устанавливает модуль текущей сессии
- session_name — Get and/or set the current session name
- session_regenerate_id — Update the current session id with a newly generated one
- session_register_shutdown — Функция завершения сессии
- session_register — Register one or more global variables with the current session
- session_reset — Re-initialize session array with original values
- session_save_path — Get and/or set the current session save path
- session_set_cookie_params — Set the session cookie parameters
- session_set_save_handler — Sets user-level session storage functions
- session_start — Start new or resume existing session
- session_status — Возвращает состояние текущей сессии
- session_unregister — Unregister a global variable from the current session
- session_unset — Free all session variables
- session_write_close — Write session data and end session
- SessionHandler — The SessionHandler class
- SessionHandler::close — Close the session
- SessionHandler::create_sid — Return a new session ID
- SessionHandler::destroy — Destroy a session
- SessionHandler::gc — Cleanup old sessions
- SessionHandler::open — Initialize session
- SessionHandler::read — Read session data
- SessionHandler::write — Write session data
- SessionHandlerInterface — The SessionHandlerInterface class
- SessionHandlerInterface::close — Закрывает сессию
- SessionHandlerInterface::destroy — Уничтожает сессию
- SessionHandlerInterface::gc — Очищает старые сессии
- SessionHandlerInterface::open — Initialize session
- SessionHandlerInterface::read — Читает данные сессии
- SessionHandlerInterface::write — Записать данные сессии
Коментарии
There is a nuance we found with session timing out although the user is still active in the session. The problem has to do with never modifying the session variable.
The GC will clear the session data files based on their last modification time. Thus if you never modify the session, you simply read from it, then the GC will eventually clean up.
To prevent this you need to ensure that your session is modified within the GC delete time. You can accomplish this like below.
<?php
if( !isset($_SESSION['last_access']) || (time() - $_SESSION['last_access']) > 60 )
$_SESSION['last_access'] = time();
?>
This will update the session every 60s to ensure that the modification date is altered.