PHP автоматически очищает сеансы с истекшим сроком действия, которые являются частью запуска «до запуска вашего кода», на основе настроек вероятности / интервалов , указанных в INI-файле. Это выполняется автоматически и за пределами вашей компетенции. Если вам нужно контролировать (или отслеживать) сеансы с истекшим сроком действия, то вы должны отключить сборщик мусора PHP и запустить свой собственный. Он будет отвечать за периодическое сканирование вашего носителя сессий (файлов, базы данных, платы ouija и т. Д.) На наличие истекших сеансов и их удаление.
Лучшим вариантом было бы просто иметь долгоживущие файлы сеанса и как-то регистрировать время последнего доступа в сеансе. Либо «прошло> XXX минут с тех пор, как вы в последний раз что-то сделали, пожалуйста, проверьте, что вы», либо «прошло XXX минут с тех пор, как вы вошли в систему», и т. Д. *
Это избавляет вас от необходимости накатывать свой собственный обработчик истечения сеанса и по-прежнему оставляет пользователей «залогиненными», и просто необходимо проверить их статус.