たぬきさん、
本来そういう使い方がよいのでしょうが、AN HTTPD の場合、子プロセスはトラブルの元になるようなので。。。
ただ、本当にそれで処理速度に反映されるのかどうかはよくわからないところではないかと思います。子プロセスの起動に結構手間がかかるようなので、多くの子プロセスを使うとそのことでかえって遅くなることもあるのではないかと思うからです。
一度全部 Perl にして比較するのもよいのではないでしょうか?
中田さんへ
返信が遅くなってしまってすみません。
自分の場合は引数文字列処理などの面倒な部分をPerlで書いて
処理速度が必要な部分だけCで書いたプログラムを実行という
やり方をしているので、どうしても子プログラムが必要になってしまいます。
Cの勉強も兼ねて、Perlに頼らずにすべて書いてみようかなと思います。
中田さん、ご返事ありがとうございます。
申し訳ない。
厚顔無恥とはまさにこの事ですね。
エラーログを見てもそれらしい兆候は感じられないんですけ、
もう一度、キチンと調べて出直してきます。
取り敢えず、ワトソン博士の機能を停めてプロセス監視ツールの挙動をみる事にしました。
たぬきさん、
別のプログラム(子プロセス)を起動するのは極力避けてもらう方がよいと思います。
本当に子プロセスを使わないとだめなのでしょうか?
中田さん
現在ヘルパープロセスを使っているわけではありませんが、
バッチファイルの中でAnHTTPDに関係ありそうな物はすべてkillしようとして
helper.exeも含めていました。(ちょっと紛らわしかったですね)
perl.exeが残る件ですが、うちの場合はCGI中で別のプログラムを
実行して結果を取得するCGIを多用していて、perl.exeを切っただけでは
子プログラムが残ってしまうのかもしれません。(?)
また、これと関係あるかどうかはわかりませんが、AnHTTPDが落ちる前兆として
CGI中で別のプログラムを実行しようとしても実行されない(できない)
CGIの起動に失敗する
という現象が多発するようになります。
1.42nにしてからはまだ落ちていないので、しばらく様子を見てみようと思います。
たぬきさん、
helper.exe を止めなければいけないとすると「ヘルパープロセス」にチェックを入れていると思われますが、Win98をのぞいて「ヘルパープロセス」にチェックを入れてもらっては困ります。
また、perl.exe が残るのはCGIの中身に問題がある場合が多いと思います。
中台さんへ
うちでも再起動の失敗に悩んでいましたが、
以下のようなやり方でリセットすることで、
ソケットエラーや2重起動エラーによる再起動失敗がなくなりました。
----------------------------------------
httpdreboot.bat
@echo off
rem ルータのリセット(不要だけど念のため)
perl BA8000reset.pl
net stop "AN HTTP Service"
taskkill /f /t /im httpd.exe
taskkill /f /t /im ansvc.exe
taskkill /f /t /im helper.exe
taskkill /f /t /im perl.exe
net start "AN HTTP Service"
----------------------------------------
taskkillコマンドはWindowsXPpro付属の物ですが、
Windows2000にも同様のツールがCDに入っていたと思います。
ちなみに/tオプションをつけないとうまくいきませんでした。
(/t:指定したプロセスとそのプロセスが開始したすべてのプロセスを削除)
中台さん、
それは AN HTTPD が出しているメッセージではありませんので、AN HTTPD 側で制御することはできません。
エラーがどんな時に出るのかを調べる方がよいのではないでしょうか(?)。
中田さん、ご返事ありがとうございます。
エラーが発生したのでhttpdを終了します。エラーログを作成しています。OK?
こんな様な赤丸×付きのダイアログだったと思います。
OKボタンを押してこれを閉じないと、2重起動?のソケットエラーという状態になる様です。
中台さん、
エラーの時のダイアログということですが、どのダイアログのことなのかわかりません。
その確認ダイアログというのは、AN HTTPD が出しているダイアログですか?
AN HTTPdをいつも便利に利用させていただいております。
常時接続の自宅サーバ環境で、24時間稼働させているんですが、
最近たまに落ちる様になり、外出中などでは対処できないので、
プロセス監視ツールを導入してhttpdプロセスを常時監視し、
エラー終了時はプログラムの再起動をする様にしました。
ところが、AN HTTPdがエラー終了する際に出る確認ダイアログを閉じないと、
ソケットエラーが出て再起動に失敗する事がわかりました。
Option窓に、この確認ダイアログを出さない設定のチェックなどを出す事は出来ますか?
ちなみに、エラー終了の発生頻度はまちまちで、3日落ちない時もあれば、
1日に何度も落ちる時もあります。
最も、毎日定時にマシンを自動再起動させています。
なお、当方の環境は、Windows2000-SP4、P3-700-256MBです。
AN HTTPdはアプリケーション動作で使用しています。