使用perl写fastcgi程序的问题,大家看看,这是为什么?

使用perl写fastcgi程序的问题,大家看看,这是为什么?

一个简单的fastcgi程序,发现alarm竟然不起作用。

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use FCGI;
my $request = FCGI::Request();
$SIG{'ALRM'} = sub { die 'timeout'};
alarm(10);
my $ret =  $request->Accept();
while($ret>=0)
{
   print "Content-type: text/html\n\n";
   print "<html><head><title>Test</title></head>";
   print "<body><pre>";
   print "Hello, World.";
   print "</pre></body></html>\n";
  $ret =  $request->Accept();
}

使用spawn-fcgi 启动,10s以后应该终止,但现在发现竟然不会终止,大家知道为什么吗?
alarm(10);
my $ret =  $request->Accept();
alarm(0);
折腾了一阵貌似是Accept()时候忽略了alarm或者alarm 0了

my $request = FCGI::Request();
$SIG{'ALRM'} = sub { die 'timeout'};
alarm(10);
sleep(15);              
my $ret =  $request->Accept();
这样就可了,但是貌似没有意义,没达到你的目的

谢谢大家的回复,这个问题比较奇怪。alarm不能中断accept,但在程序处理过程中,却会中断。我是发现我的系统中有很多fastcgi应用的僵尸进程,才逐步提炼出这个问题,放到这里的。我的问题已经解决了。