Die Upload Progress Erweiterung für PHP stellt Funktionen zur Verfügung mit denen der Forschritt beim hochladen von Dateien abgefragt werden kann. Die Erweiterung basiert auf den Arbeiten von Doru Petrescu und Christian Stocker.
Eine aktuelle Version von PHP upload progress 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: