操作を完了するのに時間がかかる Perl プラグインがあります。そのプラグインは通常、バックグラウンドで送信してすぐにメッセージを出力する CGI インターフェースから Web 経由で起動されます。残念ながら、私はそれを行う方法を見つけることができませんでした。つまり、CGI はプラグインを正しく開始しますが、プラグインが完了するのを待ちます。&、fork、detach 、Proc::Backgroundでも試してみましたが、これまでのところ運がありません。問題が CGI に関連していることは確かですが、その理由を知りたいのですが、可能であれば、これを修正したいと思います。これが私が試したコードです。すべての方法がコンソールからうまく機能することに注意してください。問題を引き起こすのはCGIだけです。
# CGI
my $cmd = "perl myplugin.pl";
# Proc::Background
my $proc = Proc::Background->new($cmd);
# The old friend &
system("$cmd &");
# The more complicated fork
my $pid = fork;
if ($pid == 0) {
my $launch = `$cmd`;
exit;
}
# Detach
print "Content-type: text/html\n\n";
print "Plugin launched!";
StackOverflow にも同様の質問があることは知っていますが、ご覧のとおり、私の問題は解決しません。