Autor Zpráva
blazej44800
Profil
Ahojte
Potrebujem vedieť ako sa správa premenná $_SESSION ak sú otvrené viaceré skripty naraz. Povedzme je otvorený jeden skript long polling (na 30s.) a počas jeho beho sa zmení hodnota nejakej $_SESSION z iné skriptu. Zmení sa aj v tom skripte long polling alebo až po jeho znovuspustení?

Vďaka
Jan Tvrdík
Profil
blazej44800:
Sessions se standardně ukládají do souboru. Při volání session_start získá PHP exkluzivní zámek k tomu souboru. To znamená, že pokud dlouhotrvající skript na svém začátku zavolá session_start, tak všechny ostatní skripty (puštěné stejným uživatelem), které taky chtějí session_start zavolat budou čekat, až ten dlouhotrvající skript doběhne. Pokud chceš tomuto čekání předejít, tak dlouhotrvající skript musí zavolat session_write_close, čímž uvolní zámek ze souboru, kde má daný uživatel sessions uloženy. Pokud v tom dlouho trvajícím skriptu znovu zavoláš session_start, tak v $_SESSION budou aktualizované hodnoty. Jinými slovy se stejnou $_SESSION (patřící stejnému uživateli) nikdy nepracují dva skripty zároveň. Vždy pouze jeden a ostatní čekají až ten pracující pracovat přestane.

(Doufám, že se nemýlím. Znám to jen teoreticky, v praxi jsem to netestoval.)
blazej44800
Profil
Ok, vďaka otestujem to :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: