Страница 1 из 2
Что потом происходит с пользователем, чей статус =5?
Добавлено: Чт апр 19, 2007 6:14 am
mnk
Вобщем subj
Добавлено: Чт апр 19, 2007 7:25 am
~AsmodeuS~
висят запе потом складываются в базу
Добавлено: Чт апр 19, 2007 9:52 am
mnk
А с каким временем складываются.
С тем, когда им статус присвоен, или с временем записи в базу.
Добавлено: Чт апр 19, 2007 10:55 am
~AsmodeuS~
с начала сесии до момента последнего успешного апдейта
Добавлено: Чт апр 19, 2007 11:36 am
mnk
Вот бывают моменты, когда статус 5, а пользователь нормально работает.
Тогда что считать последним удачным аппдейтом:
Момент, когда поменялся статус
Или последняя запись в базу.
Добавлено: Чт апр 19, 2007 11:51 am
~AsmodeuS~
когда получил информацию о сесии
Добавлено: Чт апр 19, 2007 1:55 pm
mnk
У меня нет alive и интервал для него стоит = 0
Информация обновляетя по billd -all
Получение информации о сессии в этом случае - это физически что ?
Добавлено: Чт апр 19, 2007 2:44 pm
~AsmodeuS~
отдача даных через billd
Добавлено: Пт апр 20, 2007 4:32 am
mnk
1.Те, если у него статус 5, а отдача данных происходит, то все нормально. Это правильно?
2. Если отдачи нет, то через какое время его сбрасывает?
Добавлено: Пт апр 20, 2007 10:34 am
~AsmodeuS~
если у него статус 5 и происходит отдача ему присваивается статус ниже 5
2 - Alive
Добавлено: Пт апр 20, 2007 11:10 am
mnk
По идее так и должно быть, но не работает.
1. Пользователь может долго висеть со статусом 5 и он не понижается, пока он не выйдет. И при этом сессия записывается нормально.
2. После нескольких запусков billd -all даже если отдачи нет - пользователь продолжает висеть, правда со статусом 5.
И еще. Бывают пользователи, когда он реально есть, но у него статус 5 и не записываются данные полученные по snmp.
Добавлено: Пт апр 20, 2007 1:18 pm
mnk
Поправил в файле billd строка ~202
Код: Выделить всё
elsif (defined($external_stats->{in})) {
$sessions->online_update({ USER_NAME => $line->[0],
ACCT_SESSION_ID => $acct_session_id,
STATUS => 1,
%$external_stats
});
По первому пункту - заработало. Вернуло статус 1 при нормальном чтении.
Но повторюсь, что нормального чтения иногда не происходит, хотя пользователь реально есть(данные с тотал контрол полученные по snmp скриптом bash)
Добавлено: Вс апр 22, 2007 9:24 am
mnk
Мне кажется, что в случае, когда нет alive пакетов алгоритм должен быть следующий.
1. Когда при коннекте радиус возвращает номер порта, его надо сразу до записи в таблицу dv_calls, проверить -есть ли такой номер в таблице dv_calls и если он там есть, то сбосить соединение из таблицы с этим портом и записать его в базу.
2. При запуске скрипта billd -all , если при выполнении подпрограммы get_stats возвращается ошибка 1 раз, то этому соединению присваивается статус 5.
Если после 2го считывания ошибки нет, то статус меняется на 1, а если ошибка, то соединение сбрасывается (ZAP)
Если я не прав, то пусть меня поправит разработчик.
А если прав, то поможет реализовать данный алгоритм.
Добавлено: Вс апр 22, 2007 11:08 am
~AsmodeuS~
да пока нет системы есл ипорт запят имеется срасывать соединение допишу эту возможность
Добавлено: Вс апр 22, 2007 2:18 pm
mnk
Вы напишите в форуме, когда это добавите?
И по второму пункту -тоже пока не работает. У меня сегодня сессия одна висела 22 часа, хотя пользователя на линии не было и статус был 5 (может другой статус надо присваивать?). И хотя после сброса (ZAP), сессия записалась в базу нормально, проблема была в том, а что у пользователя за эти 22 часа баланс стал < 0 и постоянно в почту шли сообщения об этом.
Те желательно, чтобы после n (можно использовать ERROR_ALIVE_COUNT) ошибок биллинг сбрасывал это соединение.