La fin d'une session ne peut pas être automatiquement déterminée par le système.
Le développeur peut arrêter implicitement une session avec la fonction session_destroy().
Les variables de session dans le tableau $_SESSION restent accessibles dans le script qui a invoqué session_destroy(), mais elles ont disparu dans les scripts suivants.
Les données session (SID, nom de la session) ne sont pas supprimées. Un nouveau session_start() ne générera pas un nouvel identifiant de session, mais reprendre le premier.
Pour terminer complétement une session, il faut supprimer implicitement le cookie de session avec setcookie().
Comme pour supprimer un cookie, il faut utiliser les mêmes paramètres que ceux de sa création, nous les récupèrons avec la fonction session_get_cookie_params() spécialement faite pour ça. A noter la date de validité du cookie est le moment présent - 24 heures pour éviter tout problème de décalage horaire entre le serveur et le client.
On aurait pu aussi implicitement réinitialiser $_SESSION
avec
$_SESSION = array();
si on n'avait
plus besoin de son contenu dans le script.