Вы не можете достоверно узнать, когда пользователь закрывает вашу страницу - события, связанные с выгрузкой, также запускаются при переходе на другую подстраницу на вашей стороне. Таким образом, наиболее распространенное решение состоит в том, чтобы просто сделать тайм-аут сеанса после x минут бездействия.
Кроме того, если вы установили свои куки сессии (id) без времени истечения ("сеансовые куки") они будут удалены при закрытии браузера.
Кстати, не очень хорошее " решение "для вашего запроса - установить время истечения сеанса на очень очень низкоеЗначение (30 секунд) может быть и «обновлять» сеанс через AJAX-запрос в фоновом режиме каждые ~ 15-20 секунд.Однако, если у кого-то очень медленное соединение, запрос может прийти слишком поздно, и, кроме того, это решение вызовет много ненужного трафика.