Вы можете поместить в свой сеанс переменную с time () внутри и использовать ее в качестве предела короткого срока действия, и пока пользователь находится внутри вашей страницы, совершайте постоянные ajax-вызовы php, который обновляет срок действия.В верхней части вашей страницы поместите:
session_start();
if(isset($_SESSION['expiry']))
if(time() > $_SESSION['expiry']){
session_destroy();
header("Refresh:0");
die();
}
$_SESSION['expiry'] = time()+20;
keep_alive.php
session_start();
$_SESSION['expiry'] = time()+20;
И в свой js ping keep_alive.php с ajax каждые 10 секунд.Если пользователь закрывает страницу и быстро ее не открывает, он теряет сеанс