如何在Web服务器上设置perl脚本的执行时间。这类似于php.ini“max_execution_time”中的php还是有其他方法吗?
答案 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
希望这有帮助。