use encs;
my $sto = encs->model("DB::Exset")->new({})->result_source->schema->storage;
printf("start\n");
foreach my $i (49,50,51,52,53,49) {
print("wait $i seconds:\n");
my $t1 = time;
my $t2 = undef;
eval {
$sto->dbh_do(
sub {
my ($storage, $dbh, @cols) = @_;
$t2 = time;
my $sth = $dbh->prepare("Select sleep($i)") or die $dbh->errstr;
$sth->execute or die $sth->errstr;
my $data = $sth->fetchrow_hashref;
}
);
};
if ( $@ ) {
printf("ERROR: %s (%d, %d)\n", $@, time - $t1, time - $t2);
}
else {
printf("Ok: (%d, %d)\n", time - $t1, time - $t2);
}
}
printf("end\n");
exit;
####
start
wait 49 seconds:
Ok: (92, 49)
wait 50 seconds:
Ok: (86, 50)
wait 51 seconds:
ERROR: {UNKNOWN}: DBI Exception: DBD::mysql::st execute failed: Lost connection to MySQL server during query [for Statement "Select sleep(51)"] at ./script/encs_wetest.pl line 32 (86, 51)
wait 52 seconds:
ERROR: {UNKNOWN}: DBI Exception: DBD::mysql::st execute failed: Lost connection to MySQL server during query [for Statement "Select sleep(52)"] at ./script/encs_wetest.pl line 32 (51, 51)
wait 53 seconds:
ERROR: {UNKNOWN}: DBI Exception: DBD::mysql::st execute failed: Lost connection to MySQL server during query [for Statement "Select sleep(53)"] at ./script/encs_wetest.pl line 32 (51, 51)
wait 49 seconds:
Ok: (49, 49)
end
####
My Catalyst YAML config for db:
Model::DB:
schema_class: encs::Schema::DB
connect_info:
dsn: dbi:mysql:encs01_test:encsdb
user: uu
password: xxxxx
options:
mysql_connect_timeout: 600
net_read_timeout: 600
net_write_timeout: 600