У меня есть приложение, работающее под 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».