Установил себе считалку траффика по статье ув. Lissyara, все по статье кроме как в базу ложится не $interface_$year, a $interface_$year_$month
и столкнулся с проблемой громадной базы, очень уж большая
Так вот решил, что можно суммировать траффик по одинаковым хостам в базе, для ее уменьшения, в идеале хочется это раз
в час делать
Но не получается реализовать, так как знаний практически нет, поэтому не пинайте сильно..
Вот что пока есть
test.php
Код: Выделить всё
<?php
// IP хостов, интерфейсы,
$ip_out_servera = "xx.xx.xx.xx"; // внешний IP сервака
$ip_internal_servera = "192.168.101.254"; // внутренний IP сервака
$IF_out_servera = "ng0"; // название внешнего интерфейса сервака
$IF_internal_servera = "nfe0"; // название внутреннего интерфейса сервака
$lan_mask = "192.168.101."; // маска по которой выбираются IP для подсчёта
//Пароли для подключения к MySQL
$db_host = "localhost";
$db_user = "ipacctd";
$db_passwd = "xxxxxx";
$db_db = "ipacctd";
//Пытаемся приконнектится к БД
if(!mysql_connect($db_host,$db_user,$db_passwd))
{
echo "<br><br><BIG><CENTER>
неведомая фигня :(</CENTER></BIG>";
exit;
}
mysql_select_db($db_db);
$day = date('Y',time()) . "-" . date('m',time()) . "-" . date('d',time());
$toiplist = "select distinct to_IP FROM `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` WHERE `date` LIKE '" . $day . "'";
$fromiplist = "select distinct from_IP FROM `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` WHERE `date` LIKE '" . $day . "'";
$porttoiplist = "select distinct port_to_IP FROM `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` WHERE `date` LIKE '" . $day . "'";
$portfromiplist = "select distinct port_from_IP FROM `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` WHERE `date` LIKE '" . $day . "'";
$protocollist = "select distinct protocol FROM `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` WHERE `date` LIKE '" . $day . "'";
$toiplist_ok = mysql_query($toiplist)or die("Error in query: ".mysql_error());
$fromiplist_ok = mysql_query($fromiplist)or die("Error in query: ".mysql_error());
$porttoiplist_ok = mysql_query($porttoiplist)or die("Error in query: ".mysql_error());
$portfromiplist_ok = mysql_query($portfromiplist)or die("Error in query: ".mysql_error());
$protocollist_ok = mysql_query($protocollist)or die("Error in query: ".mysql_error());
while ($a = mysql_fetch_assoc($toiplist_ok)) {
while ($b = mysql_fetch_assoc($fromiplist_ok)) {
while ($c = mysql_fetch_assoc($porttoiplist_ok)) {
while ($d = mysql_fetch_assoc($portfromiplist_ok)) {
while ($e = mysql_fetch_assoc($protocollist_ok)) {
$bytes = "select sum(bytes) as `bytes` from `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` where `to_IP` LIKE '" . $a . "' and `from_IP` LIKE '" . $b . "' and `port_to_IP` LIKE '" . $c . "' and `port_from_IP` LIKE '" . $d . "' and `protocol` LIKE '" . $e . "' and `date` like '" . $day . "'";
$paketov = "select sum(paketov) as `paketov` from `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` where `to_IP` LIKE '" . $a . "' and `from_IP` LIKE '" . $b . "' and `port_to_IP` LIKE '" . $c . "' and `port_from_IP` LIKE '" . $d . "' and `protocol` LIKE '" . $e . "' and `date` like '" . $day . "'";
$bytes_ok = mysql_query($bytes)or die("Error in query: ".mysql_error());
$paketov_ok = mysql_query($paketov)or die("Error in query: ".mysql_error());
while ($f = mysql_fetch_assoc($bytes_ok)) {
while ($g = mysql_fetch_assoc($paketov_ok)) {
$sum_bytes = $f['bytes'];
$sum_paketov = $g['paketov'];
$result = mysql_query("delete from `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` where `to_IP` LIKE '" . $a . "' and `from_IP` LIKE '" . $b . "' and `port_to_IP` LIKE '" . $c . "' and `port_from_IP` LIKE '" . $d . "' and `protocol` LIKE '" . $e . "' and `date` like '" . $day . "'") or die("Invalid query1: " . mysql_error());
$result = mysql_query("insert into `" . $IF_internal_servera . "_" . date('Y',time()) . "_" . date('m',time()). "` (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,`port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES(DATE(NOW()),TIME(NOW()),UNIX_TIMESTAMP(),'" . $b . "','" . $d . "','" . $a . "','" . $c . "','" . $e . "','" . $f . "','" . $g . "')")or die("Invalid query2: " . mysql_error());
echo "Успех!<br>";
}
}
}
}
}
}
}
?>
вот лог mysql
Код: Выделить всё
110405 14:07:48> 148 Connect ipacctd@localhost on.
<------><------> 148 Init DB ipacctd
<------><------> 148 Query select distinct to_IP FROM `nfe0_2011_04` WHERE `date` LIKE '2011-04-05'
<------><------> 148 Query select distinct from_IP FROM `nfe0_2011_04` WHERE `date` LIKE '2011-04-05'
110405 14:07:49> 148 Query select distinct port_to_IP FROM `nfe0_2011_04` WHERE `date` LIKE '2011-04-05'
<------><------> 148 Query select distinct port_from_IP FROM `nfe0_2011_04` WHERE `date` LIKE '2011-04-05'
<------><------> 148 Query select distinct protocol FROM `nfe0_2011_04` WHERE `date` LIKE '2011-04-05'
<------><------> 148 Query select sum(bytes) as `bytes` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query select sum(paketov) as `paketov` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query delete from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query insert into `nfe0_2011_04` (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,`port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES(DATE(NOW()),TIME(NOW()),UNIX_TIMESTAMP(),'Array','Array','Array','Array','Array','Array','Array')
<------><------> 148 Query select sum(bytes) as `bytes` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query select sum(paketov) as `paketov` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query delete from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query insert into `nfe0_2011_04` (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,`port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES(DATE(NOW()),TIME(NOW()),UNIX_TIMESTAMP(),'Array','Array','Array','Array','Array','Array','Array')
<------><------> 148 Query select sum(bytes) as `bytes` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query select sum(paketov) as `paketov` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query delete from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query insert into `nfe0_2011_04` (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,`port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES(DATE(NOW()),TIME(NOW()),UNIX_TIMESTAMP(),'Array','Array','Array','Array','Array','Array','Array')
<------><------> 148 Query select sum(bytes) as `bytes` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query select sum(paketov) as `paketov` from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query delete from `nfe0_2011_04` where `to_IP` LIKE 'Array' and `from_IP` LIKE 'Array' and `port_to_IP` LIKE 'Array' and `port_from_IP` LIKE 'Array' and `protocol` LIKE 'Array' and `date` like '2011-04-05'
<------><------> 148 Query insert into `nfe0_2011_04` (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,`port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES(DATE(NOW()),TIME(NOW()),UNIX_TIMESTAMP(),'Array','Array','Array','Array','Array','Array','Array')
<------><------> 148 Quit.......

Тому кто поможет реализовать готов закинуть на телефон 1000 руб)