Perlについての質問です。


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

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

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

Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/03/16 20:22:31
  • 終了:2007/03/23 20:25:02

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/03/16 21:05:14

ポイント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

まきのっぴ回答回数355ベストアンサー獲得回数282007/03/17 02:01:12

ポイント35pt

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

id:zachouR

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

2007/03/17 02:12:24

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません