Если вы используете 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 5; # shouldn't take longer than 5 seconds. if not, die.
do_stuff();
alarm 0; # reset the alarm
Надеюсь, это поможет.