В Yii2, удаляются просроченные сессии с помощью механизма "гребней" (garbage collection), который автоматически очищает и удаляет просроченные сессии.
Yii2 предоставляет два основных способа для настройки удаления просроченных сессий: с использованием базы данных и с использованием файловой системы.
- Удаление просроченных сессий с использованием базы данных:
- Вам необходимо настроить компонент удаления сессий (
Session
), добавив его в конфигурационный файлconfig/web.php
. Вы можете использовать, например, компонентdb
(компонент базы данных), если он уже был настроен, или создать новый компонент подключенияsession
:
'components' => [ 'session' => [ 'class' => 'yiiwebDbSession', 'sessionTable' => 'my_session', // таблица в базе данных для хранения сессий ], ],
- Если вы не задали
sessionTable
, по умолчанию будет использоваться таблица{{%session}}
. Миграция, создающая данную таблицу, уже есть в Yii2 Advanced Template. Если вы используете Basic Template, выполните командуyii migrate --migrationPath=@yii/web/migrations
.
- Удаление просроченных сессий с использованием файловой системы:
- Yii2 использует сессионные файлы для хранения данных сессий. Для удаления просроченных сессий в файловой системе, Yii2 предоставляет
gcProbability
(вероятность запуска гребней) иgcSessionTimeout
(время жизни сессии до удаления). - Добавьте компонент удаления сессий (
Session
) в конфигурационный файлconfig/web.php
следующим образом:
'components' => [ 'session' => [ 'class' => 'yiiwebSession', 'gcProbability' => 1, // вероятность запуска гребеней, 0 - никогда, 100 - всегда 'gcSessionTimeout' => 86400, // время жизни сессии (в секундах) до удаления ], ],
gcProbability
определяет вероятность запуска гребней сессий. Например, значение 1 означает, что гребни будут запускаться каждую сессию.gcSessionTimeout
определяет время жизни сессии (в секундах), после которого сессия будет считаться просроченной и подлежит удалению.
Независимо от выбранного способа, всю работу по удалению просроченных сессий выполняет компонент Session
или DbSession
. Они обрабатывают проверку времени жизни сессий и удаляют их автоматически в соответствии с настройками, установленными в конфигурации приложения.