Zend_ProgressBarEinführungZend_ProgressBar ist eine Komponente um Fortschrittsbalken in
verschiedenen Umgebungen zu erstellen und zu aktualisieren. Sie besteht aus einem
einzelnen Backend, welches des Fortschritt durch eines der verschiedenen Backends
ausgibt. Bei jedem Update nimmt es einen absoluten Wert und optional eine Statusmeldung
und ruft dann den Adapter mit einigen vorkalkulierten Werten, wie Prozentwerte und
voraussichtliche Restzeit, auf.
Grundsätzliche Verwendung von Zend_ProgressbarZend_ProgressBar ist sehr einfach in seiner Verwendung. Man
erstellt einfach eine neue Instanz von Zend_Progressbar,
definiert einen minimalen und einen maximalan Wert, und wählt den Adapter der die Daten
ausgibt. Wenn man die Datei ausführen will, muß man etwas ähnliches wie folgt machen:
update($currentByteCount);
}
$progressBar->finish();
]]>
Im ersten Schritt, wird eine Instanz von Zend_ProgressBar
erstellt, mit einem speziellen Adapter, einem minimalen Wert von 0 und einem maximalen
Wert der kompletten Dateigröße. Dann wird die Datei ausgeführt und bei jeder Schleife
wird der Fortschrittsbalken mit der aktuellen Byteanzahl aktualisiert. Am Ende der
Schleife, wird der Status des Fortschrittsbalken auf fertig gestellt.
Man kann auch die update() Methode von
Zend_ProgressBar ohne Argumente aufrufen, das die ETA einfach neu
berechnet und den Adapter aktualisiert. Das ist nützlich wenn kein Update der Daten war,
man aber den Fortschrittsbalken aktualisieren will.
Persistenter Fortschritt
Wenn man den Fortschrittsbalken über mehrere Aufrufe hinweg persistent haben will, kann
man den Namen eines Session Namespaces als viertes Argument an den Constructor angeben.
In diesem Fall wird der Fortschrittsbalken den Adapter nicht im Constructor
benachrichtigen, sondern nur wenn man update() oder
finish() aufruft. Auch der aktuelle Wert, der Statustext und
die Startzeit für die ETA Kalkulation werden im nächsten Ablauf erneut geholt.
Standard AdapterZend_ProgressBar kommt mit den folgenden zwei Adaptern:
Zend_ProgressBar_Adapter_Console
Zend_ProgressBar_Adapter_JsPush
Zend_ProgressBar_Adapter_JsPull