2 parallele Requests, wenn man mit Session arbeitet

Templorials

Erfahrenes Mitglied
Folgender Testfall:

Script1:
PHP:
<?php
session_start();
$_SESSION['count'] = 1;
while($_SESSION['count']<10) {
	sleep(1);
	$_SESSION['count'] = $_SESSION['count'] +1;
}
?>

Script2:
PHP:
<?php
session_start();
echo $_SESSION['test'];
?>

Ziel war es während Script1 läuft. Mit Script2 den aktuellen Status abzufragen. Wenn man jedoch Sessions verwendet wird Script2 erst verarbeitet wenn Script1 fertig ist, da die Session anscheinend von Script1 gesperrt wird. Gibt es bei den Sessions irgendeine Möglichkeit diese freizugeben in Script1 - oder ist das so einfach nicht umsetzbar.

Danke
 
Moin,

das ist so nicht umsetzbar:(

Solange du in Skript1 die Session nicht explicit geschlossen hast->[phpf]session_write_close[/phpf] oder Skript1 beendet ist, hast du von anderer Seite keinen Zugriff auf die Daten wegen der genannten Sperre.
Es würde dir auch nichts helfen, wenn man diese Sperre aufheben könnte, denn die Session-Daten von Skript1 wären noch nicht geschrieben.
 
Das Hauptproblem am Standard Session Handler ist das du garnicht 2 prozesse gleichzeitig laufen haben kannst. Solange das eine Script läuft setzt es einen read lock auf das session file. Sodass das 2. erst dann gestartet wird, wenn das erste beendet ist.

Je nachdem was du tust musst du über das Dateisystem arbeitest und erst alle benötigten session infos bei dem auslesescript in neue Variablen kopierst und dann session_write_close() ausführst. Dann kannst du zwar nicht mehr in die Session schreiben, aber der 2. Prozess kann problemlos gespawnt werden.
 
Zurück