Значит ситуация такая: FreeBSD 6.3, две сетевухи инет и лан, mpd 4.3, MySQL5+PHP5+Apache 1.3. Trafd трафик считает и нормально пихает в базу MySQL, но из базы страничка (веб морда) не берет инфу о трафике... Странный косяк в скрипте, вот сам скрипт:
Код: Выделить всё
<?php
// IP хостов, интерфейсы,
$ip_out_servera = "222.222.222.222"; // внешний IP сервака
$ip_internal_servera = "192.168.0.254"; // внутренний IP сервака
$IF_out_servera = "fxp0"; // название внешнего интерфейса сервака
$IF_internal_servera = "sis0"; // название внутреннего интерфейса сервака
$lan_mask = "192.168."; // маска по которой выбираются IP для подсчёта
//Пароли для подключения к MySQL
$db_host = "localhost";
$db_user = "trafd";
$db_passwd = "trafd";
$db_db = "trafd";
//Пытаемся приконнектится к БД
if(!mysql_connect($db_host,$db_user,$db_passwd))
{
echo "<br><br><BIG><CENTER>
Не могу прислюнявиться к MySQL-серванту!</CENTER></BIG>";
exit;
}
//Выбираем базу данных
mysql_select_db($db_db);
// определяем текущий месяц, и прошлый месяц - для вывода статистики
$curr_month = date(Y,time()) . "-" . date(m,time());
$old_month = date(Y,time()) . "-" . date('m',strtotime("-1 month"));
// строим HTML страничку:
?>
<HEAD>
<title>Страница статистики</title>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
<STYLE type="text/css">
#main_table .hilightoff {BACKGROUND: white}
#main_table .hilighton {BACKGROUND: #ccbbff}
#cheresstrochnaya_table .hilightoff {BACKGROUND: #88ff88}
#cheresstrochnaya_table .hilighton {BACKGROUND: #ccbbff}
</STYLE>
<BODY>
<BIG><CENTER>СТАТИСТИКА ИНТЕРНЕТА</CENTER></BIG><br><br>
<TABLE border="0" cellspacing="0" cellpadding="0" width="100%">
<TBODY>
<TR>
<TD width="50%" align="center" valign="top">
<TABLE border="1" cellspacing="0" cellpadding="0"
width="80%" id="main_table">
<TBODY>
<TR>
<TD height="20" align="center" colspan="3">
<BIG><CENTER>статистика за текущий месяц
<?php echo $curr_month; ?></CENTER></BIG></TD>
</TR>
<TR>
<TD height="20" width="15%" align="center">
<b>IP - адрес</b></TD>
<TD height="20" width="55%" align="center">
<b>пользователь</b></TD>
<TD height="20" width="30%" align="center">
<b>сколько скачано мегабайт</b></TD>
</TR>
<?php
// вытаскиваем статистику по пользователям из БД
$sql = mysql_query("SELECT to_IP, SUM(bytes) AS `bytes` FROM
`" . $IF_internal_servera . "_" . date(Y,time()) . "` WHERE `date`
LIKE '" . $curr_month . "-%' AND from_IP != '" . $ip_out_servera . "'
AND to_IP != '" . $ip_out_servera . "' AND
`to_IP` != '" . $ip_internal_servera . "'
AND `from_IP` != '" . $ip_internal_servera . "' AND `to_IP`
LIKE '" . $lan_mask . "%' GROUP BY `to_IP` ORDER BY `bytes` DESC");
// Строим табличку по тем кого достали
// вытаскиваем рейтинг страниц из БД
while ($d = mysql_fetch_assoc($sql)) {
// собственно тут вывод результатов.
$bytes = $d['bytes'] /1048576;
$bytes = round($bytes, 2);
if($d['to_IP'] == '192.168.0.21'){$user_name = 'Петров Ф. А.';}
if($d['to_IP'] == '192.168.0.17'){$user_name = 'Сидоров Н. А.';}
if($d['to_IP'] == '192.168.0.13'){$user_name = 'Иванов А.Л.';}
?>
<tr class=hilightoff onmouseover="className='hilighton';"
onmouseout="className='hilightoff';">
<td style="border-bottom: 1px solid #707680;"
width="" align="left"><?php echo $d['to_IP']; ?></td>
<td style="border-bottom: 1px solid #707680;"
width="" align="left"><?php echo $user_name; ?></td>
<td style="border-bottom: 1px solid #707680;"
width="" align="center"><?php echo $bytes; ?></td>
</tr>
<?php
unset ($user_name);
}
?>
</TBODY>
</TABLE>
</TD>
<TD width="50%" align="center" valign="top">
<TABLE border="1" cellspacing="0" cellpadding="0"
width="80%" id="main_table">
<TBODY>
<TR>
<TD height="20" align="center" colspan="3">
<BIG><CENTER>статистика за прошлый месяц
<?php echo $old_month; ?></CENTER></BIG></TD>
</TR>
<TR>
<TD height="20" width="25%" align="center">
<b>IP - адрес</b></TD>
<TD height="20" width="55%" align="center">
<b>пользователь</b></TD>
<TD height="20" width="30%" align="center">
<b>сколько мегабайт</b></TD>
</TR>
<?php
// вытаскиваем статистику по пользователям из БД
$sql = mysql_query("SELECT to_IP, SUM(bytes) AS `bytes` FROM
`" . $IF_internal_servera . "_" . date(Y,time()) . "` WHERE `date`
LIKE '" . $old_month . "-%' AND from_IP != '" . $ip_out_servera . "' AND
to_IP != '" . $ip_out_servera . "' AND `to_IP` != '" . $ip_internal_servera . "'
AND `from_IP` != '" . $ip_internal_servera . "' AND `to_IP` LIKE
'" . $lan_mask . "%' GROUP BY `to_IP` ORDER BY `bytes` DESC");
// Строим табличку по тем кого достали
// вытаскиваем рейтинг страниц из БД
while ($d = mysql_fetch_assoc($sql)) {
// собственно тут вывод результатов.
$bytes = $d['bytes'] /1048576;
$bytes = round($bytes, 2);
if($d['to_IP'] == '192.168.0.21'){$user_name = 'Петров Ф. А.';}
if($d['to_IP'] == '192.168.0.17'){$user_name = 'Сидоров Н. А.';}
if($d['to_IP'] == '192.168.0.13'){$user_name = 'Иванов А.Л.';}
?>
<tr class=hilightoff onmouseover="className='hilighton';"
onmouseout="className='hilightoff';">
<td style="border-bottom: 1px solid #707680;"
width="" align="left"><?php echo $d['to_IP']; ?></td>
<td style="border-bottom: 1px solid #707680;"
width="" align="left"><?php echo $user_name; ?></td>
<td style="border-bottom: 1px solid #707680;"
width="" align="center"><?php echo $bytes; ?></td>
</tr>
<?php
unset ($user_name);
}
?>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
<br><br>
<?php
// считаем траффик этого месяца
$traffic_curr_month = mysql_fetch_array(mysql_query("SELECT SUM(bytes) AS `bytes`
FROM `" . $IF_out_servera . "_" . date(Y,time()) . "`
WHERE `to_IP` ='" . $ip_out_servera . "' AND `date`
LIKE '" . $curr_month . "-%'"));
$traffic_curr_meg = $traffic_curr_month[bytes] / 1048576;
$traffic_curr_meg = round($traffic_curr_meg, 2);
// считаем траффик прошлого месяца
$traffic_old_month = mysql_fetch_array(mysql_query("SELECT SUM(bytes) AS `bytes`
FROM `" . $IF_out_servera . "_" . date(Y,time()) . "` WHERE
`to_IP` ='" . $ip_out_servera . "' AND `date`
LIKE '" . $old_month . "-%'"));
$traffic_old_meg = $traffic_old_month[bytes] / 1048576;
$traffic_old_meg = round($traffic_old_meg, 2);
?>
Всего было траффика за этот
месяц: <?php echo $traffic_curr_meg; ?> мегабайт<br>
Всего было траффика за прошлый месяц:
<?php echo $traffic_old_meg; ?> мегабайт<br>
</FORM>
</BODY>
</HTML>
<?php ?>
Код: Выделить всё
while ($d = mysql_fetch_assoc($sql)) {
Читал на мускуле про mysql_fetch_assoc, пробовал заменить ее другой функцией, но все никак. Прошу вашей помощи
ps статья http://www.lissyara.su/?id=1017