Perlについての質問です。


現在、あるプログラムを作っているのですが、処理時間が非常に長く、ページが出力されるまでに非常に時間がかかります。

そこで、100回処理をすると仮定して、1回目づつ処理が終わったときに、何かメッセージを動的に表示したいのです。

何かいい方法はないでしょうか?

Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:
  • 終了:2007/03/23 20:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント35pt

CGI ですか?


CGI はあまり長時間のプログラムの実行には向きません。

大抵 Apache やブラウザのタイムアウトに引っかかりエラーになりますから。


一応方法としては、CGI 中でプロセスを fork してバックグラウンドで処理を続行。

ブラウザには一旦作業中のメッセージを出します。

そのページは meta や JavaScript で問い合わせ用 CGI にクエリを投げる仕様にします。

問い合わせ用 CGI では先のバックグラウンドプロセスが終了しているかどうか確認して、終了していなければ再度処理中のメッセージを、終了していれば完了のメッセージを出すようにします。

処理が終わるまでクエリを投げ続ければそれにしたがって表示が更新される事になります。

http://q.hatena.ne.jp/answer

id:zachouR

回答ありがとうございます。


自分はPerl以外にできる言語がないので、クエリをなげる方法を調べてみます。

どうしてもできない場合は、5回ごとに一度HTMLを出力するようにしようと思います。

2007/03/17 00:59:54
id:pmakino No.2

回答回数358ベストアンサー獲得回数30

ポイント35pt

CGI で長い作業の進行中を示す CGI-ProgressBar というモジュールがあったりするので、試されてはいかがでしょうか?

id:zachouR

ありがとうございます、調べてみます!

2007/03/17 02:12:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません