我有一个 Perl 插件需要一段时间才能完成操作。该插件通常通过网络从一个 CGI 界面启动,该界面应该在后台发送它并立即打印一条消息。不幸的是,我找不到这样做的方法。我的意思是 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 上有一个类似的问题,但如您所见,它并不能解决我的问题。