Zend_ProgressBar(日本語)導入Zend_ProgressBar は、 さまざまな環境上でプログレスバーの作成や更新を行うコンポーネントです。 単一のバックエンドが、複数のアダプタの中のいずれかを用いて進捗状況を出力します。 更新のたびに現在値とオプションのメッセージを受け取り、 進捗率や残り時間などを計算してアダプタを呼び出します。 Zend_Progressbar の基本的な使用法Zend_ProgressBar の使い方はきわめて簡単です。 単純に Zend_Progressbar の新しいインスタンスを作成し、 最小値と最大値を指定した上でデータ出力用のアダプタを選択するだけです。 何かのファイルの処理を行いたい場合は、たとえば次のようになります。
まず第一段階として、 Zend_ProgressBar のインスタンスを作成してアダプタを指定し、 最小値を 0、最大値をファイルのサイズに指定します。 ループ内でファイルが処理されるたびに、 現在のバイト数でプログレスバーを更新します。 ループを抜けた後で、プログレスバーを処理完了状態に設定します。 Zend_ProgressBar の update() メソッドを引数なしでコールすることもできます。 その場合は、単に残り時間を再計算してアダプタに通知します。 これは、データが何も更新されていないけれども プログレスバーを更新したいという場合に有用です。 進捗の永続化複数のリクエストにまたがってプログレスバーを持続させたい場合は、 コンストラクタの 4 番目の引数でセッション名前空間名を指定します。 そうすると、プログレスバーのコンストラクタ内ではアダプタへの通知が行われず update() あるいは finish() をコールしたときにのみ通知が行われるようになります。 また、現在の値や状況表示用テキスト、 そして残り時間計算用の開始時刻などは次のリクエストにも引き継がれるようになります。 標準のアダプタZend_ProgressBar には次の 3 つのアダプタが同梱されています。 Zend_ProgressBar_Adapter_Console(日本語)Zend_ProgressBar_Adapter_Console は、 ターミナル用に使用するテキストベースのアダプタです。 ターミナルの横幅を自動的に検出できますが、 独自に幅を指定することもできます。 プログレスバーとともに表示する要素や、その順序も変更できます。 また、プログレスバーそのものの形式も設定できます。
アダプタのオプションを設定するには、
Zend_ProgressBar_Adapter_JsPush(日本語)Zend_ProgressBar_Adapter_JsPush は、 ブラウザ内のプログレスバーを Javascript の Push で更新するアダプタです。 つまり、実行中のプロセスの情報を取得するために改めて接続を行う必要がなく、 そのプロセス自身が状況を直接ブラウザに送信するということです。
アダプタのオプションを設定するには、
このアダプタの使い方はきわめて単純です。まず、ブラウザ上にプログレスバーを作成します。
これは JavaScript を用いたものでもかまいませんしプレーンな
HTML によるものでもかまいません。それから、更新時のメソッドと
終了時のメソッド (オプション) を JavaScript で定義します。
これらのメソッドは、どちらも唯一の引数として json オブジェクトを受け取るようにします。
そして、処理時間が長くかかるウェブページを
Example #1 クライアント側の基本例 この例では、JsPush アダプタ用の HTML および CSS、JavaScript の基本的な設定方法を示します。
これは、黒の枠線と進捗状況表示用ブロックからなるシンプルなコンテナを作成します。
プログレスバーを自作するのではなく、Dojo や jQuery などの既存の JavaScript ライブラリのものを利用したいこともあるでしょう。 たとえば次のようなものがあります。
Zend_ProgressBar_Adapter_JsPull(日本語)Zend_ProgressBar_Adapter_JsPull は jsPush とは逆の動作をします。つまり、 更新をブラウザにプッシュするのではなく更新情報をほかから受け取ることになります。 一般に、このアダプタを使う場合は Zend_ProgressBar の persistence オプションを使用する必要があります。 通知を受け取ると、このアダプタは JSON 文字列をブラウザに送ります。 その内容は jsPush アダプタから送られてくるものとほぼ同じです。 唯一の違いは、追加のパラメータ finished が含まれることです。このパラメータは、 update() がコールされた場合は FALSE、 finish() がコールされた場合は TRUE となります。 アダプタのオプションを設定するには、 set* メソッドを使用するか、あるいはコンストラクタの最初のパラメータで 配列か Zend_Config インスタンスを渡します。 使用できるオプションは次のとおりです。
|