що дані надійшли, то дописати їх в змінну-накопичувач і скинути лічильник
# часу для тайм-ауту ($ count)
{
$ result.=$ active;
$ timestart=time ();}
# Обробка інформації
if ($ result=~ m/B0! K. {64} /) # Якщо набралася повна рядок даних
{
$ ssrcno=substr ($ result, 12, 6); # Виділення номера абонента
$ sdestno=substr ($ result, 47, 26); # Виділення номера абонента
$ sstarttime=substr ($ result, 20, 10); # Виділення часу початку розмови
$ sendtime=substr ($ result, 30, 10); # Виділення часу закінчення розмови
# Розрахунок тривалості розмови в секундах
$ stimetalksec=((substr ($ result, 32, 2) * 3600) + (substr ($ result, 34, 2) * 60) + substr ($ result, 36, 2))- ((substr ($ result, 22, 2) * 3600) + (substr ($ result, 24, 2) * 60) + substr ($ result, 26, 2));
# Запис значень в бази даних
$ dbh- gt; do ( INSERT INTO $ table_name (nums, numd, starttime, endtime, timetalksec) VALUES ( $ ssrcno raquo ;, $ sdestno raquo ;, $ sstarttime raquo ;, $ sendtime raquo ;, $ stimetalksec ) );
$ dbh2- gt; do ( INSERT INTO $ table_name (nums, numd, starttime, endtime, timetalksec) VALUES ( $ ssrcno raquo ;, $ sdestno raquo ;, $ sstarttime raquo ;, $ sendtime raquo ;, $ stimetalksec ) );
$ result= raquo ;;}}
$ dbh- gt; disconnect ();
$ dbh2- gt; disconnect ();
undef $ ob;
Додаток Г
# Текст програми для побудови графіків навантаження на напрям
#!/usr/bin/perl
# Підключення модулів для роботи з СУБД і для побудови графіків
use DBI; GD :: Graph :: lines;
# Ініціалізація змінних, в змінній $ dsn записуються параметри
# подключененія до бази даних: тип СУБД - MySQL, назва бази даних - ATS_01,
# адреса підключення до бази даних - localhost
my ($ dsn)= DBI: mysql: ATS_01: localhost raquo ;; ($ dbh, $ sth); @ data;
$ count= 0 raquo ;;
$ start=1; # Перший день розглянутого періоду
$ finish=7; # Останній день розглянутого періоду
$ month= 2003-03 raquo ;; # Розглянутий місяць
$ Title= s0305 raquo ;; # Назва таблиці в базі даних
$ Lines= 800 raquo ;; # Номер напрямки
$ interval=30;
$ Nagruzka=25; # Граничне значення навантаження
# Підключення до бази даних
$ dbh=DBI- gt; connect ($ dsn, , , {RaiseError= gt; 1});
# Перевірка наявності в базі даних тимчасових таблиць end_01 і end_02, якщо таблиці
# існують, то вони видаляються
$ sth=$ dbh- gt; prepare ( show tables from ATS_01 like end_01 raquo ;; );
$ sth- gt; execute () or die $ dbh- gt; errstr;
$ ex= raquo ;;
$ ex=$ sth- gt; fetchrow_array (); ($ ex eq end_01 ) {
$ sth=$ dbh- gt; prepare ( drop table end_01; );
$ sth- gt; execute () or die $ dbh- gt; errstr;};
$ sth=$ dbh- gt; prepare ( show tables from ATS_01 like end_02 raquo ;; );
$ sth- gt; execute () or die $ dbh- gt; errstr;
$ ex= raquo ;;
$ ex=$ sth- gt; fetchrow_array (); ($ ex eq end_02 ) {
$ sth=$ dbh- gt; prepare ( drop table end_02; );
$ sth- gt; execute () or die $ dbh- gt; errstr;};
# Цикл по кожному дню розглянутого періоду
for ($ j=$ start; $ j lt;=$ finish; $ j=$ j + 1) {
# Формування дати ($ j lt; 10) {$ date=($ month) - 0 . ($ J)} {$ date=($ month) - . ($ J)};
# Створення тимчасової таблиці для записів про дзвінки за певний день
($ sql_day)= CREATE TABLE end_01 SELECT * FROM $ Title WHEREBETWEEN $ date AND $ date raquo ;;
$ sth=$ dbh- gt; prepare ($ sql_day);
$ sth- gt; execute () or die $ dbh- gt; errstr;
# Створення тимчасової таблиці для записів про дзвінки в певному напр...