From: ivan Date: Sun, 27 Feb 2011 21:31:53 +0000 (+0000) Subject: add start of torrus srvderive daemon, RT#10574 X-Git-Tag: freeside_2_3_0~550 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=bed7609980610c6582e9a3842d28f15f837efa76 add start of torrus srvderive daemon, RT#10574 --- diff --git a/FS/bin/freeside-torrus-srvderive b/FS/bin/freeside-torrus-srvderive index 9d9fcb6eb..cb2bcf41a 100644 --- a/FS/bin/freeside-torrus-srvderive +++ b/FS/bin/freeside-torrus-srvderive @@ -51,10 +51,14 @@ my $sql = " AND srvexport.srv_date = other.srv_date AND ABS( $_date - $other_date ) <= 60 ) +"; + +my $orderlimit = " ORDER BY srv_date, srv_time LIMIT 100 "; + while (1) { my $found = 0; @@ -63,6 +67,24 @@ while (1) { my $serviceid = $torrus_srvderive->serviceid; + my @serviceids = $torrus_srvderive->component_serviceids; + + my @in = (); + for my $dir ('_IN', '_OUT') { + push @in, map dbh->quote("$_$dir"), @serviceids; + } + my $in = join(',', @in); + + my $ssql = " + $sql AND EXISTS ( + SELECT 1 FROM srvexport AS other + WHERE other.serviceid IN ($in) + AND srvexport.srv_date = other.srv_date + AND ABS( $_date - $other_date ) <= 60 + ) + $orderlimit + "; + warn $sql if $DEBUG > 2; my $sth = dbh->prepare($sql) or die $DBI::errstr; #better recovery? $sth->execute($serviceid, $serviceid) or die $sth->errstr; @@ -79,8 +101,6 @@ while (1) { if $DEBUG; $found++; - my @serviceids = $torrus_srvderive->component_serviceids; - for my $dir ('_IN', '_OUT') { my $sin = join(',', map dbh->quote("$_$dir"), @serviceids);