Wenn ein HTML-Formular abgeschickt wird, nimmt der Webserver die enthaltenen Daten entgegen, stellt über das action-Attribut fest, welche Anwendung zuständig ist, startet diese Anwendung und übergibt ihr die empfangenen Daten. Das schließt zunächst jede Möglichkeit aus, den Benutzer über den Fortschritt des Uploads zu informieren.
RFC1867 File Upload Progress Hook
Die PECL-Erweiterung APC bietet jedoch seit der Version 3.20 in Verbindung mit PHP 5.2.0 oder aktueller einen Hook für den Upload von Dateien nach RFC1867, sofern PHP als Modul integriert ist. In Verbindung mit einer clientseitigen Skriptsprache, i.d.R JavaScript, lässt sich damit sehr wohl ein Fortschrittsbalken realisieren.
APC bietet mehrere Möglichkeiten, den Upload zu konfigurieren. Sie sind in der Installationsanleitung für APC beschrieben. Hier eine Übersetzung der betreffenden Optionen:
- apc.rfc1867
Der RFC1867 File Upload Progress Hook ist nur verfügbar, wenn APC gegen PHP 5.2.0 oder neuer kompiliert wurde. Wenn diese Option aktiviert ist, erzeugt APC für jeden Datei-Upload, der ein Feld namens APC_UPLOAD_PROGRESS vor dem Dateifeld enthält, einen upload_<key>-Eintrag im Usercache, wobei <key> der Wert des APC_UPLOAD_PROGRESS-Formularfeldes ist.
Zu beachten ist, dass die Upload-Verfolgung derzeit nicht threadsafe ist. Uploads, die starten, während ein anderer Upload noch läuft, schalten die Verfolgung für den laufenden Upload ab.
(Default: 0)- apc.rfc1867_prefix
Präfix für den Usercache-Eintrag.
(Default: "upload_")- apc.rfc1867_name
Name des versteckten Formularfeldes, das die Upload-Verfolgung aktiviert und den Usercache-Schlüssel festlegt.
(Default: "APC_UPLOAD_PROGRESS")- apc.rfc1867_freq
Die Häufigkeit, mit der der Usercache mit den Informationen eines laufenden Uploads aktualisiert wird. Die Angabe kann ein Prozentsatz der Dateigröße sein oder eine Angabe in Bytes, optional mit nachgestelltem 'k', 'm' oder 'g' für Kilobytes, Megabytes bzw. Gigabytes. Der Wert 0 veranlasst, dass die Aktualisierung so oft wie möglich durchgeführt wird, was den Upload-Prozess verlangsamen kann.
(Default: 0)
Links
Die Reihenfolge der Links stellt keine Wertung dar.
- Beispiel: http://progphp.com/progress.php, Sourcecode unter http://progphp.com/progress.phps
- PHP 5.2 upload progress meter
- Upload Fortschritt mit PHP + AJAX
- Hook - Erläuterung auf Wikipedia






