Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

При разборке файла с помощью Perl в качестве признака конца записи для отдельных вызовов можно принять восклицательный знак «!».

Воспользовавшись вызовом sysread(fd, $v, length), где fd – дескриптор файла $v – переменная, в которую пишется информация, length – количество считывающихся байтов за один вызов, можно установить, что АТС выдает всю запись по вызову отдельными порциями наборов символов, указанных в примере, разделенными пробелами. В АТС имеется буфер (довольно приличный по размеру), в котором хранятся данные по вызовам, так что при соединении с компьютером все предыдущие вызовы «скачиваются» в компьютер.

Код будущей программы состоит из двух блоков:

n  блок считывания и обработки (считывает из порта информацию, поступающую из АТС);

n  блок загрузки записей в базу данных.

Перед рассмотрением приведенного ниже кода скрипта подчеркнем следующее.

Наша цель – показать, что создать собственную систему биллинга совсем несложно. У каждого системного администратора есть свои излюбленные приемы в Perl, которые он при необходимости использует, приспособив подходящим образом приведенный скрипт или написав свой собственный. Поэтому мы для краткости оставили лишь типовую обработку ошибок, не стремимся усложнять код для обеспечения его безопасности, оптимальности или краткости. Отметим только, что приведенный код неплохо работал у нас на стареньком отдельно стоящем компьютере: процессы внутри АТС относительно медленные и Perl успевает делать все вовремя и без ухищрений.

Отлаженный вариант биллинговой системы с учетом кода для вывода данных с помощью PHP на Apache-сервер достаточно длинный для размещения в тексте, поэтому предоставлен автором всем желающим (www.samag.ru/source).

Реализация программы

Для реализации программы с помощью системы портов FreeBSD помимо PostgreSQL необходимо для работы интерфейса Perl к PostgreSQL установить модули Perl – DBI, DBD-Pg.

Запустив PostgreSQL, создадим таблицу atstarif базы данных ats:

# create table atstarif (nums varchar(15), mydate date, mytime time, min int, numd bigint);

 

Таким образом, строки в ней будут содержать поля:

n  Номер, инициировавший соединение.

n  Дата и время начала разговора.

n  Длительность звонка в минутах разговора.

n  Номер, на который шел вызов.

Программа биллинга на Perl может иметь следующий вид (некоторые комментарии даны в самом коде).

#!/usr/bin/perl

use POSIX qw(:errno_h);

use DBI;

use strict;

my $user="pgsql";

my $dbname="ats";

my $dsh;

my $dbh;

my $p;

my $pid;

$SIG{ALRM}= 'proga';

 

sub proga {

kill 9 => $pid;

kill 9 => $p;

}


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100