Статический менеджер хранилищ PHP-сессии.
Сама сессия работает полностью нативно: открывается один раз за запрос и остаётся открытой до конца его выполнения, данные читаются и пишутся через стандартный $_SESSION - никакой буферизации или промежуточного API нет, существующий код полностью совместим. Единственная задача класса - выбрать и зарегистрировать нужный SessionHandlerInterface (файлы или БД), на основе ::$SESSION_HANDLER_TYPE.
Запускает сессию: регистрирует хендлер хранилища (см. getHandler()), переносит ::$SESSION_TIME в session.gc_maxlifetime и вызывает session_start(). Идемпотентен - повторные вызовы в рамках одного запроса ничего не делают.
Если хранилище сконфигурировано как БД, а таблица сессий ещё не создана, выполняет однократную попытку восстановления: создаёт таблицу через switchTo() и повторяет session_start() ещё раз (см. switchTo()).
- Возвращает
- void
- Исключения
-
| DbException | если session_start() завершился ошибкой БД, не связанной с отсутствием таблицы |
| static switchTo |
( |
string |
$type | ) |
|
|
static |
Готовит и активирует переход на хранилище сессий указанного типа: при необходимости приводит структуру БД в соответствие (для типа 'mysql' создаёт/обновляет таблицу сессий через RS::dbUpdate()), переносит данные текущей сессии (если она запущена) из старого хранилища в новое - чтобы пользователь, инициировавший переключение, не потерял сессию - и регистрирует новый хендлер как текущий.
Неизвестный идентификатор типа безопасно трактуется как 'native'.
- Аргументы
-
| string | $type | идентификатор типа хранилища сессий: 'native' или 'mysql' |
- Возвращает
- void