Hello,
Bist Du dir sicher, dass das Script nach dem Senden des Status 204 auch noch zuende läuft?
ähm, ja. Kommt drauf an.
Eigentlich gehe ich davon aus, dass das Script erst seine Arbeit erledigt, und dann *zum Schluss* seine Antwort gibt. Also entweder ein 204er-Status, wenn alles in Ordnung war, oder eben eine Seite, die Informationen zum Fehler gibt.MMn darf der Browser nach dem Erhalt von Status 204 nämlich die Verbindung kappen. Und das kommt dann einem Userabort gleich. Der würde zumindest bei PHP (was ja hier auch im Gespräch war), die Beendigung des Scriptes zur Folge haben.
Das ist aber die Unsicherheit. Der Client-User wartet auf Antwort, die aber nicht kommt, weil das Script noch nicht fertig ist. Also wird er nervös, und lädt ddas Dokument nochmal. Damit wird das noch laufende Script abgebrochen und nochmals gestartet. Sollten da nun umfangreiche Datenveränderungen dahinter liegen, werden die teilweise doppelt ausgeführt, was i.d.R. zur Inkonsistenz der Daten führt.
Gerade bei PHP nicht. Zumindest wenn man's auf herkömmliche Weise mit header() macht, wird dadurch ja nur der zu sendende HTTP-Header vorbereitet und im Ausgabepuffer bereitgestellt. Endgültig zum Client geschickt wird das Zeug aber erst, wenn das Script Ausgaben macht oder beendet wird.
Das stimmt allerdings auch wieder, wenn man keine Header-Ausgabe erzwingt. Dann bleibt die angezeigte Seite im Browser aber solange "blockiert", bis diese Ausgabe kommt.
Ich denke, dass genau das nicht erwünscht war von Alex.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg