Закрытие браузера может убить куки, но не сессию, сессия хранится на сервере, и когда её убить решает сервер, потеряв куки, браузер просто потеряет к ней доступ, но не убъёт

Вообще сколько времени хранить куки, решает сам браузер, expire date от сервера, носит рекомендательный характер, браузеры не обязаны беспрекословно ему подчинятся, хотя обычно они так и делают.
Почитай о том как работает сборщик мусора в механизме сессий, и все станет ясно. В настройках php есть параметры
session.gc_divisor
session.gc_maxlifetime
session.gc_probabilitygc_divisor и gc_probability определяют периодичность запуска сборщика мусора.
если gc_probability = 100, а gc_divisor = 1, то каждый сотый вызов session_start, будет вызывать garbage collector.
Это значит что, чтобы убился твой файл сессии, нужно в интервал времени gc_maxlifetime произошло 100 обращений к запуску session_start() от другого браузера, из под другой сессии. Только в этом случае твоя сессия умрет по времени. В продакшине, при большой посещаемости, с этим проблем нет,а в денвере, кто кроме тебя обращается к серверу? Никто. Вот и живет твоя сессия не определенное время, намного больше чем тебе хотелось