Perlについての質問です。


前回の質問(http://q.hatena.ne.jp/1174044149)の答えの中で

『CGI はあまり長時間のプログラムの実行には向きません。
大抵 Apache やブラウザのタイムアウトに引っかかりエラーになりますから。
一応方法としては、CGI 中でプロセスを fork してバックグラウンドで処理を続行。
ブラウザには一旦作業中のメッセージを出します。
そのページは meta や JavaScript で問い合わせ用 CGI にクエリを投げる仕様にします。
問い合わせ用 CGI では先のバックグラウンドプロセスが終了しているかどうか確認して、
終了していなければ再度処理中のメッセージを、終了していれば完了のメッセージを出すようにします。
処理が終わるまでクエリを投げ続ければそれにしたがって表示が更新される事になります。』

「問い合わせ用 CGI では先のバックグラウンドプロセスが終了しているかどうか確認」の
CGIを作ろうと思います。

参考になるサイトなどを教えていただけないでしょうか?

Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/03/17 02:01:37
  • 終了:2007/03/24 02:05:03

回答(2件)

id:pmint No.1

pmint回答回数41ベストアンサー獲得回数62007/03/17 17:32:16

ポイント35pt

http://perl.misty.ne.jp/function01/kill.html

http://perl.misty.ne.jp/function01/fork.html

(TOPページ http://perl.misty.ne.jp/

forkでバックグラウンドプロセスIDが得られます。

kill(0, バックグラウンドプロセスID)で残っているプロセスの数を調べられます。

これが0ならバックグラウンドプロセスが終了していることになります。

id:zachouR

ありがとうございます!

さっそく実験してみます!

2007/03/18 17:29:49
id:tarchan No.2

たーちゃん回答回数200ベストアンサー獲得回数22007/03/17 21:17:28

ポイント35pt

JavaScriptが使えるならAjax化を検討してみては?

Webアプリのユーザビリティを改善しまくるAjax − @IT

http://www.atmarkit.co.jp/fwcr/rensai/ajaxwatch01/01.html

Ajaxを勉強しよう

http://www.openspc2.org/JavaScript/Ajax/Ajax_study/index.html

id:zachouR

ありがとうございます。

はじめはjavascriptを計画していたのですが、言語を覚える時間とかを考えると、現時点で一番早く実行できる事ということで、なんとかperlでやろう、という事になりました。

社内ツールの一種なので、これでもいいかな、と今は考えています。

2007/03/18 17:32:36
  • id:tamtam3
    CGIはWindowsOS上では処理が遅いし、メモリー消費も非常に多いので
    Windowsで鯖をたてているのであれば、IIS + ASPを利用した方が 楽だと思います
    というのも、一連の話の内容からすれば、このシステムが実稼動しても、
    システムダウンの可能性が高く このままでは本番に耐えられないと思います


    姥心ながら

  • id:zachouR
    社内専用のツールなので、なんでもいいから動けば良い、というスタンスになっています。

    本番というよりも、動けば今までの作業がちょっと楽になる、という程度なのです。

    助言、ありがとうございます。

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

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

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

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