Hallo und guten Morgen,
ich nutze in meinem System öfter mal header("location..."). Ist es korrekt, dass man zuvor den Session Write Prozess manuell setzen sollte "session_write_close();"? So wie hier gesagt...
Gar nicht so uninteressant die Frage :-)
Wie ist der zeitliche Ablauf? Frühestens nach Beginn der Scriptlaufzeit fird die Session gestartet, also die Sessiondatei auch gesperrt für andere Requests. Da die Header zuerst ausgegeben werden, könnte bei lange laufenden Scripten also schon mal ein Location-Header beim Browser landen, obwohl das Script auf dem Server noch läuft. Wann reagiert der Browser nun auf diese Umleitungsbitte? Muss dazu erst die Verbindung geschlossen worden seín (also das Script beendet), oder reagiert er sofort, wenn der Header (ggf. alle Header) bei ihm angekommen sind? Wie könnte man das testen?
Denn wenn der Browser sofort nach Eintreffen des Header-Blocks mit der Auswertung deer Header und damit der Umleitung beginnen würde, würde er damit auch die Verbindung kappen. Das würde im Script zu einem User-Abort führen. Ggf. noch nicht fertig geschriebene Daten würden dann fehlen.
Nach meinem Verständnis müssten die Sessiondaten aber trotz verfrühtem Script-Shutdown noch geschrieben werden, denn diese Funtionalität ist im Script-Shutdown-Prozess verankert.
Was allerdings fehlen könnte, wären einzelne Session-Elemente, deren Inhalt erst nach dem vom Browser feranlassten Script-Shutdown geändert werden würden. Der Session-Save-Prozess kann ja immer nur das aktuelle Abbild abspeichern.
Ein "ignore_user-abort()" müsste dann allerdings auch helfen. Dafür müsste nbur sichergestellt werden, dass keine Zombies erzeugt werden, also Endlosschleifen bei ausgeschaltetem Timeout hinterlassen werden.
Grüße
TS