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:
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 FortschrittWenn 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_ConsoleZend_ProgressBar_Adapter_Console ist ein Textbasierter Adater für Terminals. Er kann automatisch die Terminalbreite erkennen unterstützt aber auch eigene Breiten. Kann kann definieren welche Elemente mit dem Fortschrittsbalken angezeigt werden und auch deren Reihenfolge ändern. Man kann auch den Stil des Fortschrittsbalkens selbst definieren.
Man kann auch die Optionen des Adapters entweder über die
Zend_ProgressBar_Adapter_JsPushZend_ProgressBar_Adapter_JsPush ist ein Adapter der es erlaubt den Fortschrittsbalken in einem Browser über Javascript Push zu aktualisieren. Das bedeutet das keine zweite Verbindung benötigt wird um den Status über den aktuell laufenden Prozess zu erhalten, sondern das der Prozess selbst seinen Status direkt an den Browser schickt.
Man kann auch die Optionen des Adapters entweder über die
Die Verwendung dieses Adapters ist recht einfach. Zuerst wird ein Fortschrittsbalken im
Browser erstellt, entweder mit JavaScript oder mit vorher erstelltem reinen
HTML. Dann definiert man die Update Methode und optional die Finish
Methode in JavaScript, die beide ein Json Objekt als einziges Argument nehmen. Das wird die
Webseite mit einem lange laufenden Prozess, in einem versteckten
Example #1 Grundsätzliches Beispiel für den Client-seitigen Teil Dieses Beispiel zeigt ein grundsätzliches Setup von HTML, CSS und JavaScript für den JsPush Adapter
Das erstellt einen einfachen Container mit einem schwarzen Rand und einem Block der den
aktuellen Prozess anzeigt. Man sollte den Statt einen eigenen Fortschrittsbalken zu erstellen, kann es gewünscht sein einen von einer vorhandenen Bibliothek wir Dojo, jQuery usw zu verwenden. Es gibt zum Beispiel:
Zend_ProgressBar_Adapter_JsPullZend_ProgressBar_Adapter_JsPull ist das Gegenteil von jsPush, da es ein Holen für neue Updates benötigt, statt die Updates zum Browser zu schicken. Generell sollte man den Adapter mit der Persistenz Option auf Zend_ProgressBar verwenden. Bei der Benachrichtigung sendet der Adapter einen JSON String zum Browser, der exakt wie der JSON String aussieht der vom jsPush Adapter gesendet wird. Der einzige Unterschied ist, das er einen zusätzlichen Parameter finished enthält, der entweder FALSE ist, wenn update() aufgerufen wurde, oder TRUE wenn finish() aufgerufen wurde. Die Adapteroptionen kann man entweder über die set*() Methoden oder durch die Übergabe eines Arrays oder einer Instanz von Zend_Config mit den Optionen als ersten Parameter an den Constructor setzen. Die vorhandenen Optionen sind:
|