Der Martin: Prüfen, ob Datei übertragen (header)

Beitrag lesen

Hallo,

Nicht nur Header, auch Dateiinhalt.

:-)

Wenn ich mit schneller Verbindung eine kleinere Ressource herunterlade, ist mein Browser mit dem herunterladen oftmals schon fertig, bevor ich überhaupt nur daran gedacht habe, einen der Buttons "Speichern" oder "Abbrechen" zu klicken.
Wähle ich Speichern, kopiert der Browser die Datei aus seinem Cache an den Zielort, wähle ich Abbrechen, verwrift der Browser die Datei im Cacheverzeichnis wieder (ggf. erst zu einem späteren Zeitpunkt).

Ja, richtig. Und in beiden Fällen gilt aus der Sicht des Servers (also PHP) der Transfer bereits als abgeschlossen und erfolgreich.

Dieses Vorladen während des Wartens auf die Benutzereingabe lässt sich speziell beim IE auch ganz eindrucksvoll beobachten. Angenommen, ich habe einen Download angefordert, der längere Zeit dauert. Nun brauche ich, sagen wir mal, fünf Sekunden, bis ich mich entschieden habe, auf "Speichern" zu klicken. In diesen fünf Sekunden hat mein Browser im Hintergrund schon 100kB übertragen. Der IE berechnet nun für die Fortschrittsanzeige fortlaufend die Übertragungsrate als

bisher übertragene Datenmenge
 -------------------------------
  verstrichene Zeit seit Beginn

Die Crux ist, dass der IE die Zeit erst ab dem Moment zählt, in dem der Benutzer auf "Speichern" geklickt hat. Nach einer weiteren Sekunde ist die übertragene Datenmenge auf 120kB angewachsen, und er errechnet eine Transferrate von 120kB/1s, obwohl eigentlich kontinuierlich nur 20kB/s übertragen wurden.
Im weiteren Verlauf der Übertragung nähert sich die Anzeige dann immer mehr der tatsächlichen Übertragungsgeschwindigkeit an, aber im ersten Moment ist sie immer utopisch hoch.

Ciao,
 Martin

--
Wer morgens zerknittert aufsteht, hat den ganzen Tag Gelegenheit, sich zu entfalten.