Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / впрос по asterisk+realtime mysql

впрос по asterisk+realtime mysql

asterisk realtime mysql
<12 3
Откуда: Moscow-Minsk
Сообщений: 18

Re: впрос по asterisk+realtime mysql

я вообще-то имею ввиду серверное время, а не время разговора. Если нету такой фичи в астере,как держать одно/пул постоянных коннектов к базе с возможностью вызова встроенных процедур - так и скажите. Но не надо мне тут говорить, что это неправильно или еще как-то. Я же сразу спросил про нормальное решение, а не методом костылей
2010-01-27 17:44

Сообщений: 866

Re: впрос по asterisk+realtime mysql

что мешает делать через ODBC ?
2010-01-27 18:30

Откуда: Moscow-Minsk
Сообщений: 18

Re: впрос по asterisk+realtime mysql

ну вот я сразу и написал вторым же постом своим через odbc ;) Просто потом засомневался, держит ли он постоянный коннект
2010-01-27 20:29

Сообщений: 1573

Re: впрос по asterisk+realtime mysql

Klochan:

Я же сразу спросил про нормальное решение, а не методом костылей
Это был ответ на вопрос, как можно вызывать процедуры в базе ...

Но вы уже обозвали "костылем" то, что даже еще не пробовали.
Это не костыль, а нормально работающая app.
А если вас "тревожат" множественные коннекты к базе, то стройте под свои нужды.
2010-01-28 00:38

Откуда: Moscow-Minsk
Сообщений: 18

Re: впрос по asterisk+realtime mysql

cron333, спасибо за ваши ответы, но можно больше без ваших комментариев? Каждый раз создавать коннект к базе и завершать его - извольте
2010-01-28 08:07

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: впрос по asterisk+realtime mysql

Klochan, вам дали варианты - а вы недовольны и еще затыкаете тех, кто вам помогает.
некрасиво поступаете
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2010-01-28 09:55

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: впрос по asterisk+realtime mysql

мне не нравится работать с func_odbc, да не только не нравится, есть вещи, которые на нем не сделать, что можно сделать из app_mysq.
Asterisk - использует модель потоков, а не процессов, это значит, что коннект к базе может быть глобальной переменной, и будет
использоваться для всех запросов. Я когда-то решил именно этот вопрос -
http://asteriskpbx.ru/wiki/how-to-make-app_mysql-use-one-database-connection-for-all-queries
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2010-01-28 09:56

Откуда: Moscow-Minsk
Сообщений: 18

Re: впрос по asterisk+realtime mysql

максим, я это прочитал. Да, можно через if это прогонять, но думал есть сразу встроенное универсальное средство =)
switch, когда мне пытаются доказать, что каждый раз открывать соединение к базе, делать запрос и закрывать соединение - это нормально, я считаю обратное. Это расход процессорного времени, ресурсов и т.д. По мне гораздо правильнее сделать пул коннектов к базе и по ним уже гнать запросы. Хотел получить пример того, как это реализовано во фрирадиусе.
2010-01-28 11:16

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: впрос по asterisk+realtime mysql

Klochan, по тестам на 100 разговоров при 4 cps разницы нет (при выборке из пустой таблицы). важно лишь закрывать коннект
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2010-01-28 14:08

Сообщений: 1573

Re: впрос по asterisk+realtime mysql

И при большем кол. работает нормально. Но если требуется постоянный коннект, то вот навскидку набросал. Создание пула из трех коннектов в БД и использование их в контексте [context]:

[context]
exten => _X.,1,Set(POOL=${RAND(1|3)})
exten => _X.,n(mysql),MYSQL(Query resultid ${CONNID_${POOL}} SELECT\ <запрос>)
exten => _X.,n,GotoIf($["${MYSQL_STATUS}" = "-1"]?500)
exten => _X.,n,MYSQL(Fetch fetchid ${resultid} BILL)
exten => _X.,n,MYSQL(Clear ${resultid})
...

exten => _X.,500,Macro(connect_db,${CONNID_${POOL}},${POOL})
exten => _X.,n,Goto(mysql)

[init-connect-db]
exten => CONNECT,1,MYSQL(Disconnect ${CONNID_1})
exten => CONNECT,n,MYSQL(Connect connid localhost asterisk asterisk asterisk)
exten => CONNECT,n,NoOp(MYSQL_STATUS: ${MYSQL_STATUS}) ; вместо NoOp можно использовать что угодно для оповещения ...
exten => CONNECT,n,Set(GLOBAL(CONNID_1)=${connid})
exten => CONNECT,n,MYSQL(Disconnect ${CONNID_2})
exten => CONNECT,n,MYSQL(Connect connid localhost asterisk asterisk asterisk)
exten => CONNECT,n,Set(GLOBAL(CONNID_2)=${connid})
exten => CONNECT,n,MYSQL(Disconnect ${CONNID_3})
exten => CONNECT,n,MYSQL(Connect connid localhost asterisk asterisk asterisk)
exten => CONNECT,n,Set(GLOBAL(CONNID_3)=${connid})



[macro-connect_db]
exten => s,1,MYSQL(Disconnect ${ARG1})
exten => s,n,MYSQL(Connect connid localhost asterisk asterisk asterisk)
exten => s,n,ExecIf($["${MYSQL_STATUS}" = "-1"] - письмо админу, звонок ему же, удар в рельсу и т.д. ... )
exten => s,n,Set(GLOBAL(CONNID_${ARG2})=${connid})


При старте системы нужно создать вызов в контекст - init-connect-db. (можно придумать и другую инициализацию). А можно вообще не инициализировать. Коннекты сами создадуться (и будут пересоздаваться при необходимости) при первом вызове в контекст - context.
Остальное - полезности, "украшательства", счетчики, проверки и т.д. ... на свой вкус.
2010-01-28 16:42

<12 3
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru