@xlusv

Как выполнить скрипт при очистки сессии?

Есть таблица в БД вида: session_id, key, value, где session_id - идентификатор сессии клиента. Нужно сделать так, чтобы при удалении сессии происходило удаление соответствующих записей из этой таблицы. Что можете посоветовать?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
artem90
@artem90
TeamLead, Developer
Вам надо повесить свой обработчик сессии на destroy
php.net/manual/en/function.session-set-save-handler.php

Начиная с 5.4 можно обернуть это все в класс унаследованный от SessionHandlerInterface
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
kompi
@kompi
nullstack devoops
Как вариант - явным образом чистить сессии, соответственно, в этот момент и удалять.
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
По поводу отмеченных решений очень хочу уточнить, чтобы потом не было сюрпризов:
php.net/manual/en/function.session-set-save-handler.php
This callback is executed when a session is destroyed with session_destroy() or with session_regenerate_id() with the destroy parameter set to TRUE.

Если сессия удаляется сборщиком мусора, ничего вызвано не будет.

Более того, в тех же Debian и Ubuntu штатный сборщик старых сессий вовсе выключен и используется sh скрипт, запускаемый кроном и банальным find'ом удаляющий файлики сессий. Никакой PHP не вызывается при этом.

Это точно требуемое поведение? Выполнять какое-то действие только на удаление сессии вручную?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы