Changeset 852 for trunk/Modules


Ignore:
Timestamp:
Oct 25, 2017, 10:55:05 PM (7 years ago)
Author:
chronos
Message:
  • Modified: Use better transaction mechanism for netwatch import and latency measurement.
  • Fixed: Query duration mesurement using outdated microtime result.
Location:
trunk/Modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Modules/NetworkConfigLinux/Generators/Latency.php

    r842 r852  
    2222    exec('fping -e -r '.$RetryLimit.' -t '.$Timeout.' -a '.implode(' ', $Hosts).' 2>/dev/null', $Output);
    2323
    24     $this->Database->query('BEGIN');
    25     foreach($Output as $Index => $Line) {
     24    $Queries = array();
     25    foreach($Output as $Index => $Line)
     26    {
    2627      $IP = substr($Line, 0, strPos($Line, ' '));
    2728      $Line = substr($Line, strpos($Line, '(') + 1);
    2829      $Value = substr($Line, 0, strpos($Line, ' '));
    2930      //echo($IP.' '.$Value."\n");
    30       $this->Database->insert('NetworkInterfaceLatency', array('Interface' => $HostInterface[$IP],
     31      $Queries[] = $this->Database->GetInsert('NetworkInterfaceLatency', array('Interface' => $HostInterface[$IP],
    3132        'Value' => $Value, 'Time' => TimeToMysqlDateTime($Time)));
    3233    }
    33     $this->Database->query('COMMIT');
     34    $this->Database->Transaction($Queries);
    3435  }
    3536
  • trunk/Modules/NetworkConfigRouterOS/Generators/NetwatchImport.php

    r841 r852  
    4242    }
    4343
    44     $this->Database->query('BEGIN');
    45 
     44    $Queries = array();
    4645    foreach($Interfaces as $Index => $Interface)
    4746    {
    4847      // Update last online time if still online
    4948      if($Interface['NewOnline'])
    50         $DbResult = $this->Database->update('NetworkInterface', '`Id` = "'.$Interface['Id'].'"',
     49        $Queries[] = $this->Database->GetUpdate('NetworkInterface', '`Id` = "'.$Interface['Id'].'"',
    5150          array('LastOnline' => TimeToMysqlDateTime($StartTime)));
    5251
     
    5453      {
    5554        // Online state changed
    56         $DbResult = $this->Database->query('INSERT INTO `NetworkInterfaceUpDown` (`Interface`,
     55        $Queries[] = 'INSERT INTO `NetworkInterfaceUpDown` (`Interface`,
    5756         `State`, `Time`, `Duration`) VALUES ('.$Interface['Id'].', '.$Interface['NewOnline'].', "'.
    58           TimeToMysqlDateTime($StartTime).'", NULL)');
     57          TimeToMysqlDateTime($StartTime).'", NULL)';
    5958        // Update previous record duration in UpDown table
    60         $this->Database->query('UPDATE `NetworkInterfaceUpDown` AS `TM` SET `Duration` = TIMESTAMPDIFF(SECOND, '.
     59        $Queries[] = 'UPDATE `NetworkInterfaceUpDown` AS `TM` SET `Duration` = TIMESTAMPDIFF(SECOND, '.
    6160          '`TM`.`Time`, (SELECT `Time` FROM (SELECT * FROM `NetworkInterfaceUpDown`) AS `TA` WHERE (`TA`.`Time` > `TM`.`Time`) '.
    6261          'AND (`TA`.`Interface`=`TM`.`Interface`) ORDER BY `TA`.`Time` ASC LIMIT 1)) '.
    63           'WHERE (`TM`.`Duration` IS NULL) AND (`TM`.`Interface` ='.$Interface['Id'].')');
    64         $this->Database->update('NetworkInterface', '`Id` = "'.$Interface['Id'].'"',
     62          'WHERE (`TM`.`Duration` IS NULL) AND (`TM`.`Interface` ='.$Interface['Id'].')';
     63        $Queries[] = $this->Database->GetUpdate('NetworkInterface', '`Id` = "'.$Interface['Id'].'"',
    6564          array('Online' => $Interface['NewOnline']));
    6665      }
    6766    }
     67    $this->Database->Transaction($Queries);
    6868
    6969    // Set offline all interfaces which were not updated as online
     
    8181    }
    8282
     83    $Queries = array();
    8384    // Update device online state
    8485    $DbResult = $this->Database->select('NetworkInterface', '`Device`, SUM(`Online`) AS `SumOnline`', '`Online` = 1 GROUP BY `Device`');
     
    8687    {
    8788      if($Device['SumOnline'] > 0)
    88         $this->Database->update('NetworkDevice', 'Id='.$Device['Device'], array('LastOnline' => TimeToMysqlDateTime($StartTime), 'Online' => 1));
     89        $Queries[] = $this->Database->GetUpdate('NetworkDevice', 'Id='.$Device['Device'], array('LastOnline' => TimeToMysqlDateTime($StartTime), 'Online' => 1));
    8990    }
    90     $this->Database->update('NetworkDevice', '`LastOnline` < "'.TimeToMysqlDateTime($StartTime).'"', array('Online' => 0));
    91 
    92     $this->Database->query('COMMIT');
     91    $Queries[] = $this->Database->GetUpdate('NetworkDevice', '`LastOnline` < "'.TimeToMysqlDateTime($StartTime).'"', array('Online' => 0));
     92    $this->Database->Transaction($Queries);
    9393  }
    9494
Note: See TracChangeset for help on using the changeset viewer.