Zend_ProgressBar
Wprowadzenie
Zend_ProgressBar to komponent służący do tworzenia i
aktualizacji pasków postępu (progressbar) w różnych środowiskach. Składa się na niego
pojedynczy element backendu, który sygnalizuje postęp poprzez jeden z wielu
dostępnych adapterów. Podczas każdej aktualizacji brana jest wartość absolutna i
opcjonalna wiadomość o stanie postępu a następnie skonfigurowany adapter
jest wywoływany z obliczonymi danymi takimi jak procent postępu
oraz czas, jaki został do końca wykonywanej akcji.
Podstawowe użycie Zend_Progressbar
Zend_ProgressBar jest komponentem łatwym w użyciu. Należy,
po prostu, utworzyć nową instancję klasy Zend_Progressbar,
definiując wartość minimalną i maksymalną oraz wybrać adapter służący prezentacji
danych o postępie działań. W przypadku operacji na pliku, użycie może wyglądać
następująco:
update($currentByteCount);
}
$progressBar->finish();
]]>
W pierwszym kroku tworzona jest instancja Zend_ProgressBar
ze zdefiniowanym adapterem, wartością minimalną: 0, oraz maksymalną równą
rozmiarowi pliku. Po tym następuje seria operacji na pliku w pętli.
Podczas każdej iteracji pętli, pasek postępu jest aktualizowany danymi o
ilości "przerobionych" bajtów pliku.
Metodę update() klasy Zend_ProgressBar
można również wywoływać bez argumentów. Powoduje to przeliczenie czasu do końca
wykonywanej akcji i wysłanie go do adaptera. Ten sposób może być przydatny gdy nie
ma konkretnych danych do wysłania adapterowi ale niezbędna jest aktualizacja
paska postępu.
Postęp utrwalony (persistent progress)
Jeśli zajdzie potrzeba utrzymania paska postępu przez wiele żądań, można w tym celu
podać łańcuch znaków z przestrzenią nazw sesji
jako czwarty argument konstruktora. W tym przypadku
pasek postępu nie uaktualni adaptera w momencie konstruowania - niezbędne będzie
wywołanie metody update()
lub finish().
Obecna wartość, tekst stanu postępu oraz czas rozpoczęcia działania
(wymagany przy obliczaniu czasu pozostałego do końca) będą pobrane podczas następnego
żądania i uruchomienia skryptu.
Standardowe adaptery
Standardowo Zend_ProgressBar ma do dyspozycji następujące
adaptery: