【发布时间】:2015-08-13 06:13:07
【问题描述】:
我需要在 DBIx::HA 包中实现不到一秒的超时。从该模块获得以下代码:
my $timeout = 0;
eval {
no strict;
my $h = set_sig_handler(
'ALRM',
sub { $timeout = 1; die 'TIMEOUT'; },
{ mask=>['ALRM'], safe=>1 }
);
alarm($DATABASE::conf{_getdbname($dsn)}->{'connecttimeout'});
$dbh = DBI->connect($dsn, $username, $auth, $attrs);
alarm(0);
};
我知道有一个核心 Perl 模块 Time::HiRes,但我以前从未使用过它。它还有一个 alarm() 子 - 我可以在上面的行之前插入 use Time::HiRes qw (alarm); 吗?或者也许我应该以某种方式调整上面的行?我没有找到任何明显的例子。
【问题讨论】:
-
你试过了吗? :)
-
@simbabque 已经是了 :) 我有点(非常)悲观,但是在更仔细地阅读了文档之后,我也明白了那些行(“这个函数可以导入......”) .谢谢!
标签: perl timeout alarm time-hires