このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

CGIプログラムの自動終了のやり方

発言者:平野良明
( Date Friday, November 07, 1997 18:00:25 )


教えて下さい!!
現在、AppleScriptでプログラムを書いているのですが、CGIとして利用するに当って
アプリケーションを自動終了させないで使っています。立ち上がっているソフトの数
が多くなるとCGIの速度が落ちてしまいます。たとえば、「5分程そのアプリケーション
が動作しなかったら終了させる」というようなことはできるのでしょうか?
他にプログラムを作らないとできないのでしょうか?
プログラム自体に埋め込む形でできれば助かるのですが・・・
宜しくお願いします。

→  税務シミュレーション

田中求之 さんからのコメント
( Friday, November 07, 1997 23:23:37 )

idle ハンドラーを用いることで、お望みのことは可能です。

たとえば、

property lastWorkTime : ""

on run
  set lastWorkTime to current date
end run

on idle
  if lastWorkTime + 300 > (current date) then quit
  return 60
end idle

on ヌWWWスsdocネ
  set lastWorkTime to current date
  --- 以下、CGI の通常の処理
end ヌWWWスsdocネ


というように、起動時、および CGI の処理の際に、その時点の時間を property に
記録しておき、idle ハンドラーで最後の処理から5分経ったかどうかをチェックします。
上記の例では、1分ごとにチェックを行っています。

なお、CGI をたくさん立ち上げている場合に、そんなに処理速度が遅くなりますか?
(idle メッセージが送られるのが原因なら、idle ハンドラーで return する値
を大きくしておけばいいわけですが)。もちろん、メモリーは食いますけどね。

田中求之 さんからのコメント
( Friday, November 07, 1997 23:24:42 )

あ、ミス (^_^;;

> if lastWorkTime + 300 > (current date) then quit

ここは、正しくは

 if lastWorkTime + 300 < (current date) then quit

です。

平野良明 さんからのコメント
( Saturday, November 08, 1997 00:24:56 )

ご返答ありがとうございました。
うまく終了することができました。ありがとうございました。
速度の件ですが10本位立ち上がっていると2倍の時間がかかります。
プログラムの組み方が悪いのでしょうか?
とりあえず、プログラムが終了できるので速度の問題も解決です。