+
+ eval {
+ my $timeout = set_sig_handler(
+ 'ALRM', sub {
+ dbh->clone()->do("KILL QUERY ". dbh->{"mysql_thread_id"})
+ if driver_name eq 'mysql';
+ die '_timeout';
+ },
+ { mask=>['ALRM'] , safe=>1 }
+ );
+ alarm(5*60); # 15*60);
+ $sth->execute($serviceid, $serviceid) or die $sth->errstr;
+ alarm(0);
+ };
+ alarm(0);
+ if ( $@ =~ /^_timeout/ ) {
+ warn "search timed out; reconnecting and restarting\n";
+ adminsuidsetup($user);
+ next MAIN;
+ } elsif ( $@ ) {
+ die $@;
+ }
+