我在 perl 中使用fork
with 。
当我正常运行它时,它会按预期打印 5 次。
但是当我在 apache 服务器中将此文件配置为快速 cgi 时,它只打印一次。
任何人都可以在这里帮助我。CGI::Fast
In handle request
In handle request
示例程序:
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Fast;
use Data::Dumper;
use HTML::Template;
while(my $query = CGI::Fast->new()) {
my $timeout ='60';
eval {
local $SIG{ALRM} = sub {
print STDERR "Fcgi error";
exit(0);
};
alarm $timeout;
#wait till all the result returns
my $val = process_request( $query );
alarm 0;
} or print STDERR $@;
}
sub process_request{
my $query = shift;
my @childs = ();
print $query->header;
foreach my $i ( 1..5 ) {
my $pid = fork();
if( $pid ) {
push( @childs, $pid );
}
elsif( $pid == 0 ) {
_handle_request();
exit(0);
}
}
foreach my $child ( @childs ) {
my $pid = waitpid( $child, 0 );
}
return;
}
sub _handle_request{
print "In handle request<br/>";
return;
}