Статья WEB-интерфейс для трафика

Обсуждаем сайт и форум.

Модератор: f0s

Аватара пользователя
BSD_Lover
проходил мимо
Сообщения: 2
Зарегистрирован: 2008-03-16 20:34:29

Статья WEB-интерфейс для трафика

Непрочитанное сообщение BSD_Lover » 2008-03-16 20:53:32

Очень понравились статьи про trafd и веб-фейс к нему. Именно то, что мне нужно :)
Значит ситуация такая: 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);
?>
Всего было траффика за&nbsp; &nbsp; этот &nbsp; &nbsp; 
месяц: &nbsp; <?php echo $traffic_curr_meg; ?> мегабайт<br>
Всего было траффика за прошлый месяц: 
<?php echo $traffic_old_meg; ?> мегабайт<br>
</FORM>
</BODY>
</HTML>

<?php ?>
Когда открываю страничку, на ней пишет мол ошибка в:

Код: Выделить всё

while ($d = mysql_fetch_assoc($sql)) {
Тоже самое и в страничке для индивидуального ip (юзера).
Читал на мускуле про mysql_fetch_assoc, пробовал заменить ее другой функцией, но все никак. Прошу вашей помощи :P

ps статья http://www.lissyara.su/?id=1017

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: Статья WEB-интерфейс для трафика

Непрочитанное сообщение BlackCat » 2008-03-17 8:23:39

Ошибка скорее всего возникает из-за того, что не правильно выполняется запрос к мускулу парой строк выше.
Попробуйте изменить код вот так:

Код: Выделить всё

// Перед использованием результата запроса,
// проверям результат выполнения
if(mysql_errno()){
  echo mysql_error();
  exit;
}
// Строим табличку по тем кого достали
// вытаскиваем рейтинг страниц из БД
while ($d = mysql_fetch_assoc($sql)) {

svmt
рядовой
Сообщения: 15
Зарегистрирован: 2008-08-21 13:07:42
Откуда: Тольятти
Контактная информация:

Re: Статья WEB-интерфейс для трафика

Непрочитанное сообщение svmt » 2008-08-21 13:45:34

Присоединяюсь к оратору....
все отгружается
а вот страничка пустая....
изменения попробовал не помогли....
блин
а ЩЩАстье было так.... :oops:

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35271
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Статья WEB-интерфейс для трафика

Непрочитанное сообщение Alex Keda » 2008-08-22 20:56:16

логи смотри.
или включи вывод ошибок на экран
Убей их всех! Бог потом рассортирует...

svmt
рядовой
Сообщения: 15
Зарегистрирован: 2008-08-21 13:07:42
Откуда: Тольятти
Контактная информация:

Re: Статья WEB-интерфейс для трафика

Непрочитанное сообщение svmt » 2008-08-25 8:01:41

10 000 извинений :oops:
вопрос снят

ЗЫ
не работал php на серваке :-D