蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

phpでファイルアップロードの進捗状況を表示する(その3)

の続き。
今回は、PHP5.2で使えるUpload Progress Meter extensionを試してみる。そもそも先日来スクリプトをPHP5に移行していたのは、この機能を使うためだった。PHP5への移行自体が目的化していて、移行できた頃には本来の目的を忘れていたけど……
ところが、インストールしようとすると

% sudo pecl install uploadprogress
pecl.php.net is using a unsupported protocol - This should never happen.
install failed

というエラーが出た。対処法として紹介されている、「pear update-channels」を実行するという方法では「up to date」と言われてダメ。そこで、コチラに書かれていた、.channelsディレクトリを削除するという荒技で対処。

% cd `pear config-get php_dir`
% sudo rm -r .channels
% sudo pear update-channels

php.iniに「extension=uploadprogress.so」を追加。
デモをダウンロードして、試してみた。が、localでサーバーを動かしているので、一瞬でアップロードが終わってしまい、

Upload succeeded, it took 0.17 seconds.
BUT there were no progress meter updates
Your upload was maybe too short, try with a bigger file or a slower connection

という結果に……。今までは遠隔にあるサーバでテストできたんだけど、そのPHPのバージョンが低いので、今回ばかりはlocalでしかテストできないのだ。

デモサイトでファイルをアップロードしてみると、情報の書き換えごとにステータスバーに「応答を待っています」等と表示されるし、ブラウザの履歴にページの読込が残ってしまうのが鬱陶しい。iframeを使っているためのようだが、どこかにiframeを使わない格好いいサンプルがないかしらん。ステータス表示用の別ウィンドウを開くんだったら履歴に残るのは気にしなくていいかなぁ?