Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
{
parse_log;
}
Функция parse_log – единственная в программе, специфичная для LG GDK-162.
sub parse_log
{
# Если массив log содержит m_cache строк, то заносим данные в БД
if (@log >= $m_cache)
{
push_to_db;
}
# Отбираем строки фиксирующие исходящие звонки
if (/Od+/)
{
# Удаляем символы *, #, O
s/[*,O,#]+//g;
# Сохраняем полученную строку в массив log
push (@log, $_);
}
print;
}
Допустим, надо добавить поддержку АТС, пишущую протокол в формате:
2005-08-21 16-21-00 06 1234567 00:00:11 144
Для этого достаточно будет дописать еще одну конструкцию if в функцию parse_log (кроме этого, надо не забыть проверить параметры последовательного порта).
if (/^(d{4}-d{2}-d{2})s+(d{2}-d{2}-d{2})s+(d{2})s+(d+)s+(d{2}:d{2}:d{2})s+
{
push (@log, "00 $6 $3 $5 $1 $2 $4");
}
Постоянно держать открытым соединение с базой данных – не очень хорошая идея. Поэтому все строки, соответствующие регулярному выражению «/Od/g» (журнал исходящих вызовов), сначала заносятся в массив @log. Как только в нем накапливается $m_cache строк – вызывается процедура push_to_db, которая устанавливает соединение с базой pbxbilling и записывает данные в таблицу gdklog:
# $d_time // Дата и время
# $station // Внутренний номер
# $line // Внешняя линия
# $t_call // Продолжительность вызова
# $date // Дата
# $time // Время
# $c_number // Вызванный номер
my ($d_time, $station, $line, $t_call, $date,
$time, $c_number, @log);
# Параметры соединения с базой данных
my $base = "pbxbilling";
my $user = "gdk";