処理をするのに長い時間がかるようなバッチ処理(まとまった一括処理)をする場合に、処理中にその状態を表示したいものです。例えば、全体の件数が表示されていて、現在そのうちの何件まで処理が終わっている、といった情報が画面上に表されていれば、ユーザーは現状をいつでも把握することができます。
VBやCなどの言語ではこうしたことは日常茶飯事で、簡単に行う処理なのですが、php言語を使う場合は、これがたいへん難しくなります。phpを用いたプログラムの場合、結果をブラウザーにHTML形式で表示させるのが一般的です。そうすると途中経過をユーザーに知らせるためには、例えば1秒に1回ブラウザーの画面を再表示させるなどしなければなりません。つまり、一方でバッチ処理を進めつつ、もう一方ではユーザーに途中経過を知らせるためのプログラムを走らせる必要があるということです。
今回、この難題に取り組んでみました。2つのphpプログラムを平行して走らせ、一方はバッチ処理を、一方はバッチ処理の処理経過をユーザーに通知するという形をとっています。サンプルプログラムを作りましたので一度試してください。
ちなみに、このプログラムはマルチユーザーにも対応しています。
次回に、このプログラムの仕組みを説明し、ソースコードもリリースしたいと思います。お楽しみに。