use FS::Record qw( qsearch str2time_sql str2time_sql_closing concat_sql );
use FS::torrus_srvderive;
-our $DEBUG = 1;
+our $DEBUG = 2;
my $user = shift or die &usage;
$FS::Daemon::PID_NEWSTYLE = 1;
$other_date = "CAST( $other_date AS TIMESTAMP )" if driver_name =~ /^Pg/i;
$other_date = str2time_sql. $other_date. str2time_sql_closing;
+my $in = concat_sql([ '?', "'_IN'" )
+my $out = concat_sql([ '?', "'_OUT'" )
+
my $sql = "
SELECT DISTINCT srv_date, srv_time FROM srvexport
WHERE NOT EXISTS (
SELECT 1 FROM srvexport AS other
- WHERE other.serviceid IN ( ?||'_IN', ?||'_OUT')
+ WHERE other.serviceid IN ( $in, $out )
AND ABS( $_date - $other_date ) <= 60
)
ORDER BY id
+ LIMIT 10
";
while (1) {
- #my $found = 0;
+ my $found = 0;
foreach my $torrus_srvderive ( qsearch('torrus_srvderive', {}) ) {
my $serviceid = $torrus_srvderive->serviceid;
+ warn $sql if $DEBUG > 1;
my $sth = dbh->prepare($sql) or die $DBI::errstr; #better recovery?
$sth->execute($serviceid, $serviceid) or die $sth->errstr;
my $prev = 0;
while ( my $row = $sth->fetchrow_arrayref ) {
+ $found++;
my( $srv_date, $srv_time ) = @$row;
my $cur = str2time( "$srv_date $srv_time" );
next if $cur-$prev <= 60;
myexit() if sigterm() || sigint();
- sleep 60; #unless $found
+ sleep 60 unless $found;
}
sub _shouldrun {