Oh, ich wollte "Bekommen Session-Dateien wirklich nur eine Schreibsperre oder auch eine Lesesperre?" und nicht "Session-Daten" schreiben. Ich hoffe jetzt reden wir nicht aneinander vorbei, ich warte daher erst mal auf Klärung.
Falls sie nur eine Schreibsperre bekommen: Kann man aus dem script heraus feststellen, ob (k)eine Schreibsperre besteht oder "muß" man prophylaktisch was in die Session schreiben, damit man erst danach was lesen kann, weil man die Schreibrechte bekommen hat und durch den Schreibvorgang andere Zugriffe eine Schreibsperre haben?
Selbst wenn du so vorgehen würdest - deine neu in die Session gesteckten Daten würden erst dann wirklich *geschrieben*, wenn du session_write_close aufrufst (oder das Script zu Ende ist, was implizit den Schreibvorgang auslöst). Dann kannst du dann aber auch erst wieder neu lesen, wenn du die Session neu aufnimmst - und selbst wenn dir das in der selben Scriptinstanz gelingt, könnte ein anderer Prozess inzwischen einen Lock haben.
Das heißt, wenn ich eine session starte (mit session_start(), eine Session die schon läuft), dann werden die Session-Daten aus der Session-Datei in den Speicher geladen, es erfolgt dadurch aber keine Sperre die über das Laden hinaus anhält?
Nun kann ich die Session-Daten (im Speicher) verändern. Die ursprünglichen Daten können aber währenddessen über einen anderen script-Aufruf auch aus der Session-Datei geladen, verändert und (wörtlich) früher oder später wieder in die Session-Datei geschrieben werden?
Die Sperre besteht nur (wieder?), wenn am scriptende bzw. bei function.session-write-close die Session-Daten aus dem Speicher in die Session-Datei geschrieben werden?
Dann verstehe ich folgenden Hinweis nicht: "Bei der Verwendung von Framesets zusammen mit Sessions werden Sie merken, dass wegen dieser Sperrung ein Frame nach dem anderen geladen wird. Sie können die Zeit zum Laden aller Frames reduzieren, indem Sie die Session beenden, sobald alle Änderungen an den Session-Variablen durchgeführt sind."
Für mich hört sich das so an, als ob die anderen script-Aufrufe warten müßten und auch warten. Warten aber nicht auf das Fertiglesen* nach Lesestart, auch nicht warten auf das Fertigschreiben* nach Schreibstart, sondern warten auf die Abarbeitung des scriptes, welches die Session-Daten eher aus der Session-Datei gelesen hat. Damit nicht auf die Abarbeitung gewartet werden muß, soll man function.session-write-close einsetzen.
* Was sicherlich relativ schnell geht.
Ich warte hierzu erstmal Klarheit ab, bevor ich auf die anderen Beiträge reagiere.