Die Übertragung von Dateien von einem Client (z.B. Browser ) zu einem Server (z.B. Webserver ) ist fester Bestandteil heutiger Internet-Anwendungen. Durch die steigende Anzahl an Hochgeschwindigkeitsanschlüßen (z.B. DSL ) steigt auch die durchschnittliche Größe der Dateien an, die hochgeladen werden. Falls jedoch die Bandbreite des verwendeten Internet-Anschlusses nicht ausreichend hoch ist oder aber die zu übertragenden Dateien zu groß sind, möchte der Anwender gerne wissen, wieviel Prozent der Datei bereits übertragen wurde. Soweit die Internet-Anwendung die Verwendung von PHP erlaubt, kann hierbei die Erweiterung PHP Fortschrittsanzeige (engl. PHP upload progress) verwendet werden, die dem Benutzer anzeigt, wieviel Prozent einer hochzuladenden Datei bereits übertragen wurden. Die Erweiterung basiert auf den Arbeiten von Doru Petrescu und Christian Stocker und ist in der Programmiersprache C geschrieben.
Eine aktuelle Version von PHP Fortschrittsanzeige steht auf der zentralen Download-Seite zur Verfügung.
Die Erweiterung stellt eine neue Funktion uploadprogress_get_info zur Verfügung, die innerhalb eines PHP Scripts verwendet werden kann. Diese Funktion erwartet als einzigen Parameter eine ID. Bei dieser ID handelt es sich um einen Schlüssel, der einen upload eindeutig identifiziert. Dieser Schlüssel muss für jeden Upload dynamisch generiert und in einem versteckten Feld hinterlegt werden. Der Name des versteckten Feldes kann über eine Einstellung in der Datei php.ini definiert werden. Das Formular könnte beispielsweise so aussehen.
Nachdem ein solches Formular abgeschickt wurde, kann der Fortschritt des uploads mit Hilfe der Funktion uploadprogress_get_info überwacht werden. Dazu muss derselbe Wert, der in dem oben gezeigten Beispiel als "<?php rand() . time(); ?>" /> übermittelt wurde, an die Funktion übergeben werden. Um das zu bewerkstelligen gibt es mehrere Möglichkeiten, die an dieser Stelle nicht weiter erörtert werden sollen. In der Erweiterung ist ein Beispiel enthalten, das eine dieser Möglichkeiten demonstriert.
Die Funktion liefert ein Feld zurück. In diesem Feld sind die folgenden Informationen gespeichert.
| Feldname | Beschreibung |
| bytes_total | Anzahl der Bytes die insgesamt hochgeladen werden sollen |
| bytes_uploaded | Anzahl der Bytes doe bisher hochgeladen wurden |
| speed_average | Durchschnittliche Geschwindigkeit mit der hochgeladen wird |
| est_sec | Geschätze verbleibende Zeit bis der upload beendet wird |
| current_file | Name der Datei die derzeit hochgeladen wird |
Die Erweiterung kann mit Hilfe einiger Parameter konfiguriert werden. Die Konfiguration kann in der Datei php.ini (oder in einer der durch sie eingebundenen Dateien) oder in der Konfiguration des Webservers erfolgen. Folgende Parameter werden in der aktuellen Version unterstützt.
| Einstellung | Typ | Standardeinstellung | Beschreibung |
| uploadprogress.filename_template | Zeichenkette | /tmp/upt_%s.txt | Name der Datei in der die Upload-Informationen zwischengespeichert werden |
| uploadprogress.upload_identifier | Zeichenkette | UPLOAD_IDENTIFIER | Name des versteckten input Feldes (in dem Formular für den Upload) dessen Wert den Upload eindeutig identifiziert |
| uploadprogress.update_interval | Integer | 500 | Wert der angibt, wie oft der Fortschritt neu berechnet werden soll |
| uploadprogress.delete_finished | Boolean | 1 | Wenn dieser Wert auf eins gesetzt ist, wird die temporäre Datei mit den Upload-Informationen gelöscht, nachdem der Upload beendet wurde. |
Als Ausgangspunkt für die Entwicklung der Erweiterung habe ich die folgenden bereits existierenden Lösungen verwendet und angepasst:
Sie müssen sich anmelden oder registrieren um einen Kommentar abgeben zu können.