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);
}
?>