Переменные сеанса находятся на стороне сервера, а закрытие вкладки - это действие на стороне клиента, поэтому вам нужно каким-то образом отправить на сервер сигнал для очистки этих переменных сеанса.
Самым очевидным способом для меня было бы использование метода onbeforeunload браузера и ajaxical отправка чего-либо на сервер для очистки сеанса.
Теперь вам нужно найти способ, как вы обнаружите, что все вкладки вашего сайта закрыты. Потому что, если у меня ваш сайт открыт в двух вкладках, этот метод очистит сеанс при закрытии одной вкладки, рендеринг другая вкладка бесполезна (не бесполезна, возможно, из-под этой страницы был извлечен коврик, теперь этот сеанс завершен)