Wenn man auf einer Web-Oberfläche Dateien hochladen möchte, so gibt es hierfür im wesentlichen zwei sehr verbreitete Möglichkeiten: Während die erste Version gemäß dem HTTP-Standard und dem application/x-www-form-urlencoded-Encoding die Datenüberträgt, was jeder heutige Browser unterstützt, so findet man an verschiedensten Stellen sogenannte Flash-Uploader, die zwar im Wesentlichen das Gleiche tun, jedoch versuchen verschiedene Funktionen nachzurüsten, die in vielen Browsern fehlen. Eine dieser Funktionen ist das Anzeigen des Upload-Fortschritts oder die Anzeige der Upload-Geschwindigkeit.
Im Internet findet man für diese Funktion auch verschiedene Ansätze, die jedoch meist darauf hinauslaufen, auf dem Server ein zusätzliches Perl-Script zu installieren, was dann versucht aus dem Temp-Verzeichnis von PHP die Daten zusammenzukratzen. Dies ist nicht nur ineffizient, da für jede Fortschrittsabfrage eine vollständige Perl-Instanz gestartet werden muss, sondern oft auch reichlich wacklig, wenn es um neuere Versionen von Scripten geht.
Eine wesentlich bessere Lösung wäre hier, wenn der Server sich um das Tracken von Uploads kümmern könnte und man somit keinen zusätzlichen Speicher für derlei Fortschrittsabfragen verwenden muss. Zusätzlich kann durch den Wegfall solcher externen Programme deren Ladezeit eingespart werden, wenn der Server dies bereits selbst verwaltet.
Und genau hier setzt mod_upload_progress an, der als Apache-Modul alle laufenden Upload-Vorgänge verfolgt und deren Status abfragbar macht. Diese lässt sich mit wenigen Schritten installieren und zusätzlich an die eigenen Wünsche anpassen. Aber der Reihe nach. (more…)