Moin!
Ich kann allerdings nicht versprechen, dass zwei PHP-Prozesse dieselbe Session "benutzen" können. Kann das jemand verifizieren?
Solange ein Skript läuft, ist die Sessiondatei für Zugriffe anderer Aufrufe gesperrt, diese Skripte würden beim Befehl session_start() also angehalten und müssten warten.
Man kann diese Zwangspause beenden, indem das erste Skript nach dem Ende aller schreibenden Zugriffe auf Sessionvariablen mit dem Befehl session_write_close() den Zugriff für EINEN der anderen wartenden Prozesse freigibt - denn dort gilt natürlich wieder das gleiche Spielchen, nur ein Prozess kann zur Zeit den exklusiven Zugriff auf die speichernde Sessiondatei erhalten.
Diese Exklusiv-Sperre hat übrigens ihren sehr wichtigen Sinn, denn dadurch werden Sicherheitslücken vermieden, die unter anderem durch Race-Conditions entstehen könnten. Da das PHP-Sessionsystem auf allgemeine, beliebige Nutzung ausgelegt sein muss, kommt man um diese Funktionsweise im Standard-Speichermodul nicht herum.
Es gibt allerdings in PHP noch viele Alternativen zur Errichtung eines prozessübergreifenden gemeinsamen Speicherbereichs. Eine sehr simple Methode wäre der gemeinsame Zugriff auf eine Datenbank. Und weil's weiter oben erwähnt war: Wer den Standard-Sessionspeicher-Mechanismus mittels session_set_save_handler() austauscht und z.B. auf Datenbankspeicherung umstellt, sich aber keine Gedanken über das prozessübergreifende Locking von Schreib- und Lesezugriffen auf den gemeinsamen Datenspeicher macht, öffnet seine Applikation grundsätzlich für Angreifbarkeiten durch Race-Conditions.
- Sven Rautenberg
"Love your nation - respect the others."