プロが教えるわが家の防犯対策術!

CGIを作成している環境が
Windows2000+IIS+ActivePerlで、時間がかかる処理を
行うプログラムを作成しています。

いろいろ調べて、alarm()とシグナルでブラウザタイムアウトを
防ぐ方法や、forkして子プロセスする方法などを、
試したのですが、うまくいかず、
よくよく調べてみるとWindows環境だと、alarmもforkも未実装らしく困り果てています。

IISでタイムアウト時間を延ばすのは避けたいです。
ブラウザのタイムアウトを回避しつつ、処理の長い
CGIを実行するいい方法はないでしょうか?

A 回答 (1件)

IISでできるかどうかはわかりませんが、時間のかかる処理を実行する前に標準出力を閉じてしまえばWebサーバに処理が終わったと勘違いさせることができると思います。


(apacheやanHTTPDではこの方法でできます)

ソースはこんな感じで。

#
# HTMLの表示処理部分
#

# 標準出力を閉じる
close(STDOUT);

#
# ここから時間のかかる処理を行う
#

ただ、ブラウザ上での表示が完了した後もプロセス自体は動いていることになるので、そのあたりを考慮したプログラミングをする必要があります。
    • good
    • 0
この回答へのお礼

お返事が遅くなってすいません。
教えていただいた件を実行してみましたが、
だめでした。

処理が終了するまで、ブラウザが開放されないみたいです。
ん~IISは使いづらいです・・・

お礼日時:2006/01/10 08:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!