爲什麼直到$ sth-> execute完成之後,這段代碼才執行信號處理程序?更重要的是,我該如何解決它?如何獲得DBD :: Pg可靠超時?
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Sys::SigAction qw(set_sig_handler);
my $dbh = DBI->connect('dbi:Pg:dbname=dc');
eval {
my $h = set_sig_handler('ALRM', sub { die "timeout\n" });
eval {
alarm 1;
my $sth = $dbh->prepare("SELECT pg_sleep(10)");
print "Before execute\n";
$sth->execute;
print "After execute\n";
$sth->finish;
};
alarm 0;
die "[email protected]" if [email protected];
};
die "[email protected]" if [email protected];
print "Finished\n";
是的,我也試過。不幸的是,在沒有凍結在同一個地方的情況下,沒有辦法等待相同的查詢。也就是說,除非我想使用睡眠循環,這會增加不必要的延遲。 – Flimzy 2010-10-10 05:05:42