Database; while(1) { $StartTime = time(); $DbResult3 = $Database->query('SELECT DHCP, AddressRange, Mask FROM `NetworkSubnet` WHERE (`Configure` = 1) AND (`Member` IS NULL) GROUP BY DHCP'); //echo($DbResult3->num_rows); while($Subnet = $DbResult3->fetch_assoc()) { echo($Subnet['AddressRange'].'/'.$Subnet['Mask'].' on router '.$Subnet['DHCP']."\n"); $Routerboard = new Routerboard(); $Routerboard->UserName = $Config['MainRouter']['UserName']; $Routerboard->Timeout = $Config['MainRouter']['ConnectTimeout']; $Routerboard->HostName = $Subnet['DHCP']; $List = $Routerboard->ListGetPrint($Path, array('host', 'status')); foreach($List as $Properties) { //echo($Properties['host'].', '); if($Properties['status'] == 'up') { $Online = 1; $Values = array('Online' => $Online, 'LastOnline' => 'NOW()'); //echo($Properties['host']." up\n"); } else { $Online = 0; $Values = array('Online' => $Online); //echo($Properties['host']." down\n"); } $DbResult = $Database->update('NetworkInterface', '`LocalIP` = "'.$Properties['host'].'"', $Values); } } // Update device online state $DbResult = $Database->select('NetworkDevice', 'Id', '`Used`=1'); while($Device = $DbResult->fetch_assoc()) { $DbResult2 = $Database->select('NetworkInterface', 'SUM(`Online`) AS `SumOnline`', '`Device`='.$Device['Id']); $DbRow = $DbResult2->fetch_array(); if($DbRow['SumOnline'] > 0) $Online = 1; else $Online = 0; $Values = array('Online' => $Online); if($Online == 1) $Values['LastOnline'] = 'NOW()'; $Database->update('NetworkDevice', 'Id='.$Device['Id'], $Values); } // Update interface online statistics $DbResult = $Database->select('NetworkInterface', 'Id', '`Online` = 1'); while($Interface = $DbResult->fetch_assoc()) { $DbResult2 = $Database->select('NetworkInterfaceStat', '*', '(`NetworkInterface`="'.$Interface['Id'].'") AND (`Time` = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))'); if($DbResult2->num_rows == 0) $Database->query('REPLACE INTO `NetworkInterfaceStat` (`NetworkInterface`, `Time`, `PingCount`) VALUES ("'.$Interface['Id'].'", DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"), 1)'); else $Database->query('UPDATE `NetworkInterfaceStat` SET `PingCount` = `PingCount` + 1 WHERE (`NetworkInterface`="'.$Interface['Id'].'") AND (`Time` = DATE_FORMAT(NOW(), "%Y-%m-%d %H:00:00"))'); } $EndTime = time(); $Delay = $Period - ($EndTime - $StartTime); if($Delay < 0) $Delay = 0; echo('Waiting '.$Delay.' seconds...'."\n"); sleep($Delay); } ?>