Web服务器上的Perl max执行时间

时间:2010-08-23 09:01:00

标签: php perl time webserver

如何在Web服务器上设置perl脚本的执行时间。这类似于php.ini“max_execution_time”中的php还是有其他方法吗?

1 个答案:

答案 0 :(得分:3)

如果您使用的是CGI(不是mod_perl或FastCGI),那么只需在代码顶部添加以下内容即可:

alarm 30; # SIGALRM delivered to this process after 30 secs

如果程序没有SIGALRM的处理程序,它将会死亡。

示例:

use strict;
use warnings;
alarm 2;
my $n = 0;
while ( 1 ) {
  print "$n\n";
  sleep 1;
  $n++;
}
__END__
$ perl alr
0
1
Alarm clock

您可以选择超时发生时应该发生的事情,如下所示:

$SIG{ALRM} = sub {
  # do stuff
};

您可以在使用alarm()之前放置该代码。

可能会发送一封电子邮件,告知您脚本花费的时间比预期的要长,或者其他什么。

警报也可以用作代码特定部分的监视程序,例如:

alarm 5;    # shouldn't take longer than 5 seconds. if not, die.
do_stuff();
alarm 0;    # reset the alarm

希望这有帮助。