Я сделал что-то действительно один раз противный. Каждый раз, когда сеанс «обновлялся» обновлением / извлечением страницы и т. Д., Я обновлял метку времени в строке БД. Второй демон опрашивал базу данных каждые 10 минут и выполнял операции «очистки».
Вы не найдете никаких собственных средств PHP для достижения своей цели. Тайм-аут сеанса не работает в фоновом режиме. Вы даже не узнаете, истекло ли время сеанса, если сеанс с истекшим сроком не попытается получить другой доступ. В этот момент практически невозможно поймать в ловушку, вы можете принять решение и правильно с ним справиться.
Я бы порекомендовал архитектуру очереди и опроса для этой проблемы. Это легко и обязательно сработает. Добавьте memcached, если у вас есть сомнения по поводу производительности транзакций.