我有一個應用程序運行在Catalyst + FastCGI下。我想要它fork()在後臺做一些工作。
我用普通的CGI這個代碼早就(和它的工作):在FastCGI中fork()的正確方法是什麼?
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錯誤網關」的錯誤。
請給,一些更多的信息。你試過了什麼,它給了什麼錯誤/行爲? – 2010-04-07 12:09:45