我有一个脚本,该脚本在与Web服务器进行通信时偶尔出现。服务器悬挂或响应数据很慢。
我目前正在使用alarm()
作为hack来终止脚本的脚本(以免用线程淹没系统),但这会导致CRON错误,这会提醒Sysadmin,Sysadmin确实不希望这200封电子邮件当系统掉落时产生。
是否有另一种方法可以终止不会导致非OK出口和相应电子邮件的脚本(如果需要的话)?
您可以在信号处理程序中扔一个异常,然后在其他地方捕获。
my $success = eval {
local $SIG{ALRM} = sub { die "Failure" };
alarm 10;
do_something_long();
alarm 0;
1;
};
if (!$success) {
warn "Timeout!n" if $verbose;
exit 0;
}