• ベストアンサー

Windowsで重い処理を実行したい

CGIを作成している環境が Windows2000+IIS+ActivePerlで、時間がかかる処理を 行うプログラムを作成しています。 いろいろ調べて、alarm()とシグナルでブラウザタイムアウトを 防ぐ方法や、forkして子プロセスする方法などを、 試したのですが、うまくいかず、 よくよく調べてみるとWindows環境だと、alarmもforkも未実装らしく困り果てています。 IISでタイムアウト時間を延ばすのは避けたいです。 ブラウザのタイムアウトを回避しつつ、処理の長い CGIを実行するいい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

IISでできるかどうかはわかりませんが、時間のかかる処理を実行する前に標準出力を閉じてしまえばWebサーバに処理が終わったと勘違いさせることができると思います。 (apacheやanHTTPDではこの方法でできます) ソースはこんな感じで。 # # HTMLの表示処理部分 # # 標準出力を閉じる close(STDOUT); # # ここから時間のかかる処理を行う # ただ、ブラウザ上での表示が完了した後もプロセス自体は動いていることになるので、そのあたりを考慮したプログラミングをする必要があります。

club_m2005
質問者

お礼

お返事が遅くなってすいません。 教えていただいた件を実行してみましたが、 だめでした。 処理が終了するまで、ブラウザが開放されないみたいです。 ん~IISは使いづらいです・・・

すると、全ての回答が全文表示されます。

関連するQ&A