Session_end ненадежен. Неважно, что ты делаешь.
Session_end срабатывает только при использовании сеанса inprocess. Если вы используете сервер состояния сеанса или сеанс SQL, session_end не срабатывает.
При использовании в сеансе процесса session_end срабатывает, только если вы сохранили что-то в сеансе. Если вы не используете сеанс, session_end никогда не сработает.
Если вы используете сессию и пользователь закрывает браузер, session_end сработает, когда сессия пользователя истечет. Хотя он будет иметь некоторые настройки, аналогичные исходному сеансу, это событие не будет привязано к браузеру, поскольку это рабочий процесс, который обнаруживает тайм-аут сеанса и запускает процесс session_end.