- $found++;
-
- for my $dir ('_IN', '_OUT') {
-
- my $sin = join(',', map dbh->quote("$_$dir"), @serviceids);
-
- my $srv_date = time2str('%Y-%m-%d', $cur);
-
- my $sum = "
- SELECT COALESCE(SUM(value),0) FROM srvexport AS other
- WHERE other.serviceid IN ($sin)
- AND other.srv_date = '$srv_date'
- AND ABS( $cur - $other_date ) <= 60
- ";
- my $ssth = dbh->prepare($sum) or die $DBI::errstr;
- $ssth->execute or die $ssth->errstr; #better recovery?
- my $value = $ssth->fetchrow_arrayref->[0];
-
- my $isql = "
- INSERT INTO srvexport (srv_date, srv_time, serviceid, value, intvl)
- VALUES ( ?, ?, ?, ?, ? )
- ";
- my @param = ( $srv_date,
- time2str('%X', $cur), #srv_time
- "$serviceid$dir", #serviceid
- $value,
- 300, #intvl ...
- );
- warn $isql. ' with param '. join(',',@param). "\n"
- if $DEBUG > 2;
-
- my $isth = dbh->prepare($isql) or die $DBI::errstr; #better recovery?
-
- #stupid mysql deadlocks all the time on insert, so we need to recover
- unless ( $isth->execute(@param) ) {
- #warn "Error inserting data for $serviceid$dir (restarting): ".
- # $isth->errstr;
- warn "Error inserting data for $serviceid$dir: ". $isth->errstr;
- dbh->rollback; #or die dbh->errstr;
- #sleep 5;
- #next SERVICEID; #MAIN;
- exit;
- }
-
- }