Ich habe kürzlich im Rahmen eines Projektes ein Skript gebaut, welches ein dynamisches HTML-Formular erzeugt. Das Formular besteht aus ca. 15.000 Zeichen und wird je nach gesetzten Werten erneut über Ajax nachgeladen.
Leider funktionierte das Nachladen nur sporadisch und ohne erkennbares Muster. Die Logfiles wiesen auf keinerlei Fehler hin und auch der Support des Hosters für das Projekt hatte keine rechte Idee, woran es liegen könnte.
Meinem Kunden kann ich aber schlecht erklären, dass seine Anwendung nur gelegentlich funktionert.
Firebug zeigte über die Konsole zwar brav, dass das Skript über Ajax aufgerufen wurde, jedoch war die Übertragung in 4 von 5 Fällen unvollständig, obwohl ein HTTP-Return-Code 200 zurückgegeben wurde. Mit 0.9 Sekunden Laufzeit war auch das Überschreiten etwaiger maximaler Skriptlaufzeiten unwahrscheinlich.
Vorsichtshalber habe ich auch den Speicherbedarf während der Verarbeitung des Skripts mitgeloggt und bei ca. 16 MB Speicherbedarf gabe es auch keine Probleme.
Schließlich habe ich mir über “Live HTTP headers” die übertragenen Werte des Headers angeschaut und siehe da, für “Content-Length” wurde nur der Wert 32 übertragen.
Also habe ich vor der Ausgabe des Wertes den entsprechenden Header mit
1 |
header("Content-Length: #Länge des Contents#"); |
die korrekte Länge des Contents übergeben und siehe da, die Übertragung funktioniert reibungslos.