DBIx::HA パッケージに 1 秒未満のタイムアウトを実装する必要があります。そのモジュールから次のコードを取得します。
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);
上記の行の前に挿入してもよろしいですか? それとも、上記の行を何らかの形で適応させる必要がありますか? 明らかな例は見つかりませんでした。