【发布时间】:2011-02-05 05:40:09
【问题描述】:
我有一个在 Catalyst+FastCGI 下运行的应用程序。我想让fork() 在后台做一些工作。
我很久以前就将这段代码用于纯 CGI(并且它有效):
defined(my $pid = fork) or die "Can't fork: $!";
if ($pid) {
# produce some response
exit 0;
}
die "Can't start a new session: $!" if setsid == -1;
close STDIN or die $!;
close STDOUT or die $!;
close STDERR or die $!;
# do some work in background
我在 FastCGI 下尝试了一些变体,但没有成功。 FastCGI下应该如何分叉?
更新:这就是我现在拥有的:
defined(my $pid = fork) or die "Can't fork: $!";
if ($pid) {
$c->stash->{message} = 'ok';
$c->detach($c->view('JSON'));
}
die "Can't start a new session: $!" if setsid == -1;
close STDIN or die $!;
close STDOUT or die $!;
close STDERR or die $!;
# do some work, then exit()
我使用 AJAX 调用发送请求,并且在 firebug 控制台中出现“502 Bad Gateway”错误。
【问题讨论】:
-
请提供更多信息。您尝试了什么,它给出了什么错误/行为?