人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlについての質問です。

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

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

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

Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3

●質問者: zachouR
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache HTTP Perl Windows XP プログラム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

CGI ですか?


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

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


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

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

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

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

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

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

◎質問者からの返答

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


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

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


2 ● まきのっぴ
●35ポイント

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ