Ce face session_write_close / session_commit
Cu stocarea implicită în fișiere, PHP blochează fișierul sesiunii cât timp scriptul rulează. Dacă o pagină face o operație lungă (export, apel API), celelalte cereri ale aceluiași utilizator (de exemplu AJAX) așteaptă. session_write_close salvează datele și eliberează blocarea imediat.
După apel, poți citi în continuare $_SESSION, dar modificările nu mai sunt salvate. session_commit este un alias, cu exact același comportament.
Ce returnează
true la succes, false la eroare.
Exemple
Exemplul 1: Eliberarea sesiunii înaintea unei operații lungi
<?php
session_start();
$utilizator = $_SESSION["utilizator"];
session_write_close();
// operație lungă: celelalte cereri ale lui Ana nu mai așteaptă
sleep(5);
echo "Raport generat pentru $utilizator";
Rezultat în browser
Raport generat pentru ana
Exemplul 2: Modificările de după închidere se pierd
Al treilea element a fost adăugat după închiderea sesiunii, deci nu apare la cererea următoare.
<?php
session_start();
$_SESSION["cos"] = ["laptop", "mouse"];
session_commit();
$_SESSION["cos"][] = "tastatură";
// la cererea următoare
session_start();
print_r($_SESSION["cos"]);
Rezultat în browser
Array
(
[0] => laptop
[1] => mouse
)
Greșeli frecvente
- Modifici
$_SESSIONdupăsession_write_closeși te aștepți să fie salvat. Pornește din nou sesiunea cusession_start()înainte.
Comenzi înrudite
session_start: Pornește sau reia sesiunea vizitatorului, ca să poți păstra date între pagini în $_SESSION.session_abort: Închide sesiunea fără să salveze modificările făcute în $_SESSION în cererea curentă.session_register_shutdown: Înregistrează salvarea și închiderea sesiunii (session_write_close) ca funcție rulată la finalul scriptului.