現在、あるプログラムを作っているのですが、処理時間が非常に長く、ページが出力されるまでに非常に時間がかかります。
そこで、100回処理をすると仮定して、1回目づつ処理が終わったときに、何かメッセージを動的に表示したいのです。
何かいい方法はないでしょうか?
Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3
CGI ですか?
CGI はあまり長時間のプログラムの実行には向きません。
大抵 Apache やブラウザのタイムアウトに引っかかりエラーになりますから。
一応方法としては、CGI 中でプロセスを fork してバックグラウンドで処理を続行。
ブラウザには一旦作業中のメッセージを出します。
そのページは meta や JavaScript で問い合わせ用 CGI にクエリを投げる仕様にします。
問い合わせ用 CGI では先のバックグラウンドプロセスが終了しているかどうか確認して、終了していなければ再度処理中のメッセージを、終了していれば完了のメッセージを出すようにします。
処理が終わるまでクエリを投げ続ければそれにしたがって表示が更新される事になります。
ありがとうございます、調べてみます!
回答ありがとうございます。
自分はPerl以外にできる言語がないので、クエリをなげる方法を調べてみます。
どうしてもできない場合は、5回ごとに一度HTMLを出力するようにしようと思います。