次のコードがあります。$pub->close
starman サーバーが HUP シグナルを受信したときにメソッドを呼び出したい。
- 子プロセスが終了したことをどのように知ることができますか?
- END {} ブロックを使用できますか? 私はこれを試しましたが、plackup が (編集後に) 再起動するとうまくいくようです。私はスターマンでこれを試しました。HUP シグナルを送信しましたが、子プロセスが再起動されません。
- HUP のシグナル ハンドラーをインストールする必要がありますか? それはどのように機能しますか?
子プロセスがブロックされないと、子が再起動する前にクリーンアップしたいと思います。
これは私が使用する .psgi ファイルです。
use ZMQ;
use ZMQ::Constants ':all';
use Plack::Builder;
our $ctx = ZMQ::Context->new(1);
my $pub = $ctx->socket(ZMQ_PUB);
$pub->bind('tcp://127.0.0.1:5998');
# I want to close the socket and terminate the context
# when the server is restarted with kill -HUP pid
# It seems the children won't restart because the sockets isn't closed.
# The next two lines should be called before the child process ends.
# $pub->close;
# $ctx->term;
builder {
$app
}