変更時にmod_fcgidの下で実行されているPerlスクリプトを再起動する方法
質問
mod_fcgid
の下にFastCGIスクリプトを実行しています。スクリプトに変更を加えるたびに、それらが自動的にリロードする必要があります。
mod_fastcgi
では、
FastCgiConfig -autoUpdate
.
それを正確にするが、mod_fcgid
はそのようなオプションを持っていません。
誰もがこのために良い回避策を持っていますか?
私が思いついた最高のものは、次のとおりです。
while (my $cgi = CGI::Fast->new()) {
processRequest($cgi);
exit if -M $0 < 0; # restart if script changed
}
.
もう1つの要求を処理した後に終了します。しかし、これは理想的ではありません、特にスクリプトの複数のインスタンスが実行されている場合、それはすべての古いインスタンスがもう一度実行する機会がある前にかなりの時間がかかるかもしれません。
exit
の前にprocessRequest
を実行すると、ユーザーはエラーを獲得しますので、どちらもできません。
事前にありがとう、
- Michael
解決
それをする正しい方法は少し微妙です。私は-r
オプションで起動するようにアプリを適応させてください。あなたのアプリを適応させることはあなたが期待するよりも簡単かもしれません。
.
use CGI::Fast;
while (my $cgi = CGI::Fast->new) {
processRequest($cgi);
}
use CGI::Emulate::PSGI;
use CGI;
my $app = CGI::Emulate::PSGI->handler(sub {
my $cgi = CGI->new;
processRequest($cgi);
});
.
(適切なネイティブPSGIアプリを書くことはさえもいいですが、このバージョンはあなたのアプリのほとんどを書き換えることから保存します)。
他のヒント
私はこれをまったく試していませんが、
所属していません StackOverflow