diff($start_time, true); $delta = (int)$interval->format("%a"); // === Определяем СУБД === $db_type = $db->getAttribute(PDO::ATTR_DRIVER_NAME); // === Формат даты в зависимости от СУБД и периода === if ($delta == 1) { $mysql_format = '%Y-%m-%d %H:00:00'; $pg_format = 'YYYY-MM-DD HH24:00:00'; } elseif ($delta > 1 && $delta <= 31) { $mysql_format = '%Y-%m-%d'; $pg_format = 'YYYY-MM-DD'; } else { $mysql_format = '%Y-%m'; $pg_format = 'YYYY-MM'; } $l3_interfaces = get_wan_interfaces($db, $device_id); $global_int_in = $global_int_out = $global_int_f_in = $global_int_f_out = 0; echo "" . htmlspecialchars($device_name, ENT_QUOTES, 'UTF-8') . "\n"; foreach ($l3_interfaces as $row) { $name = htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8'); $desc = !empty($row['description']) ? ' (' . htmlspecialchars($row['description'], ENT_QUOTES, 'UTF-8') . ')' : ''; echo "{$name}{$desc}\n"; echo "\n"; echo "" . WEB_date . "\n"; echo "" . WEB_title_input . "\n"; echo "" . WEB_title_output . "\n"; echo "" . WEB_title_forward_input . "\n"; echo "" . WEB_title_forward_output . "\n"; echo "\n"; // === Параметризованный запрос === $params = [$device_id, $row['snmpin'], $date1, $date2]; if ($db_type === 'mysql') { $date_expr = "DATE_FORMAT(ts, '$mysql_format')"; $sql = " SELECT $date_expr AS dt, SUM(bytes_in) AS byte_in, SUM(bytes_out) AS byte_out, SUM(forward_in) AS byte_f_in, SUM(forward_out) AS byte_f_out FROM wan_stats WHERE router_id = ? AND interface_id = ? AND ts >= ? AND ts < ? GROUP BY $date_expr ORDER BY dt"; } elseif ($db_type === 'pgsql') { $date_expr = "TO_CHAR(ts, '$pg_format')"; $sql = " SELECT $date_expr AS dt, SUM(bytes_in) AS byte_in, SUM(bytes_out) AS byte_out, SUM(forward_in) AS byte_f_in, SUM(forward_out) AS byte_f_out FROM wan_stats WHERE router_id = ? AND interface_id = ? AND ts >= ? AND ts < ? GROUP BY $date_expr ORDER BY dt"; } else { throw new Exception("Unsupported DB: $db_type"); } $int_statistics = get_records_sql($db, $sql, $params); $int_in = $int_out = $int_f_in = $int_f_out = 0; foreach ($int_statistics as $stat) { echo "\n"; echo "" . htmlspecialchars($stat['dt'], ENT_QUOTES, 'UTF-8') . "\n"; echo "" . fbytes($stat['byte_in']) . "\n"; echo "" . fbytes($stat['byte_out']) . "\n"; echo "" . fbytes($stat['byte_f_in']) . "\n"; echo "" . fbytes($stat['byte_f_out']) . "\n"; echo "\n"; $int_in += $stat['byte_in']; $int_out += $stat['byte_out']; $int_f_in += $stat['byte_f_in']; $int_f_out += $stat['byte_f_out']; } echo "\n"; echo "" . WEB_title_itog . "\n"; echo "" . fbytes($int_in) . "\n"; echo "" . fbytes($int_out) . "\n"; echo "" . fbytes($int_f_in) . "\n"; echo "" . fbytes($int_f_out) . "\n"; echo "\n"; $global_int_in += $int_in; $global_int_out += $int_out; $global_int_f_in += $int_f_in; $global_int_f_out += $int_f_out; } echo "\n"; echo "" . WEB_title_itog . "\n"; echo "\n"; echo "\n"; echo "" . fbytes($global_int_in) . "\n"; echo "" . fbytes($global_int_out) . "\n"; echo "" . fbytes($global_int_f_in) . "\n"; echo "" . fbytes($global_int_f_out) . "\n"; echo "\n"; } ?>


$val) { print_gateway_statistics($db_link,$key,$val,$date1,$date2); } } else { $router = get_record_sql($db_link,"SELECT device_name FROM devices WHERE id=?", [ $rgateway ]); print_gateway_statistics($db_link,$rgateway,$router['device_name'],$date1,$date2); } ?>