できるだけ高速でなければならないスクリプトがいくつかあります(mpd5アップ/ダウンスクリプトとして使用されます)。
アイデアを持ってください:このスクリプトがいくつかのtcpサーバーに引数を送信して作業を終了すると、サーバーは懸命に長く動作します。
これは、Net :: Serverを使用したテストサーバースクリプトです:
use Net::Server::PreForkSimple;
use base "Net::Server::PreForkSimple";
sub process_request {
my $self=shift;
my $a=<STDIN>;
close STDIN; close STDOUT; #trying to disconect client here
$self->log(1,"start $a");
sleep 50;
$self->log(1,"finish $a");
}
__PACKAGE__->run(port => 2000);
問題は次のとおりです。$a=の後にオンラインでクライアントを切断する方法がわかりません。このすべての「スリープ50」を待機しているクライアントスクリプト。STD *を閉じようとしていますが、効果がありません。また、このNet::Serverのドキュメントでcloseまたはdisconectメソッドを見つけることができません。
誰かが私を正しい方向に向けることができますか?
UPD:
close($self->{server}->{client});
あまりにも動作しません。
私はこれをテストします
echo test | nc 127.0.0.1 2000
このコマンドは50秒機能します。
しかし、「テスト」を送信した直後にncを閉じたい。