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

выбор транка

изменение последовательность выбора транков
Сообщений: 147

Re: выбор транка

Упс пардон )
[globals]
OPER=0
MAX_VALUE=30
[main]
exten=> _X.,1,Set(START_IN=${OPER})
exten=> _X.,n(start),Set(GLOBAL(OPER)=$[${OPER} + 1])
exten=> _X.,n,GotoIF($[${OPER} >= ${MAX_VALUE}?:not_max])
exten=> _X.,n,Set(GLOBAL(OPER)=1)
exten=> _X.,n(not_max),GotoIf($[${START_IN} == ${OPER}]?over)
exten=> _X.,n,Dial(SIP/oper_${OPER}/${EXTEN},60)
exten=> _X.,n,GotoIF($[${DIALSTATUS} == CHANUNAVAIL]?start)
exten=> _X.,n(over),Hangup()

Так нормально ?
2010-09-17 17:28

Сообщений: 1573

Re: выбор транка

Чуть поспешил я с предыдущими выводами ... ))

Не рабочий ваш вариант ...!
2010-09-17 18:31

Сообщений: 147

Re: выбор транка

Уже когда домой ехал понял что налажал ). Задача оказалась сложнее и интереснее ..
[globals]
OPER=1
MAX_VALUE=30
[main]
exten=> _X.,1,Set(COUNT=0)
exten=> _X.,n(start),Set(COUNT=$[${COUNT} + 1])
exten=> _X.,n,GotoIF($[${OPER} > ${MAX_VALUE}?:not_max])
exten=> _X.,n,Set(GLOBAL(OPER)=1)
exten=> _X.,n(not_max),Dial(SIP/oper_${OPER}/${EXTEN},60,g)
exten=> _X.,n,Set(GLOBAL(OPER)=$[${OPER} + 1])
exten=> _X.,n,GotoIF($[${COUNT} == ${MAX_VALUE}?over])
exten=> _X.,n,GotoIF($[${DIALSTATUS} == CHANUNAVAIL]?start)
exten=> _X.,n(over),Hangup()

Но есть одно но в данном варианте ... за четкое распределение звонков между операторами, при отказе одного из них и при малом количестве операторов (2-3), отказоустойчивость может не сработать. Как вариант - делать перебор в 2 раза больше чем операторов.
2010-09-17 22:45

Сообщений: 1573

Re: выбор транка

Не-а! Опять - не рабочий ... ))
2010-09-17 23:48

Сообщений: 147

Re: выбор транка

[globals]
OPER=0
MAX_VALUE=30
[main]
exten=> _X.,1,Set(COUNT=0)
exten=> _X.,n(start),Set(COUNT=$[${COUNT} + 1])
exten=> _X.,n,Set(GLOBAL(OPER)=$[${OPER} + 1])
exten=> _X.,n,GotoIF($[${OPER} > ${MAX_VALUE}?:not_max])
exten=> _X.,n,Set(GLOBAL(OPER)=1)
exten=> _X.,n(not_max),Dial(SIP/oper_${OPER}/${EXTEN},60)
exten=> _X.,n,GotoIF($[${COUNT} == ${MAX_VALUE}?over])
exten=> _X.,n,GotoIF($[${DIALSTATUS} == CHANUNAVAIL]?start)
exten=> _X.,n(over),Hangup()
2010-09-18 07:07

Сообщений: 1573

Re: выбор транка

iye, скажите, как вы думаете, может ли OPER выйти за границы 30?

В высоко-нагруженную систему ежесекундно приходит 6-10 вызовов ... )
2010-09-18 13:27

Сообщений: 147

Re: выбор транка

Может .. но нас это не волнует .. т.к стоит условие, если больше 30 сбрасываем до 1. У нас ведь не может быть условия что некоторые вызовы обрабатываются быстрее других при прохождении диалплана ? )
2010-09-18 14:54

Сообщений: 1573

Re: выбор транка

Представьте себе ситуацию, когда один вызов проверил OPER и переходит непосредственно к вызову, а другой поступающий в этот момент увеличивает эту переменную, например до 31 (и пока она опять не сброшена, какие то из новых поступающих примут уже 31, которую впоследствии тоже могут увеличить) ....

2010-09-18 15:16

Сообщений: 147

Re: выбор транка

Очень маловероятно ... настолько что можно пренебречь ..(увеличение переменной опер должно будет произойти в интервале когда мы уже проверили ее на максимум и до начала диала .. это наверно даже не миллисекунды ... а вы о 10 вызовах в секунду ...) и даже если такая ситуация произойдет то что мы получим в диалстусе ? Тот же ченел анэвэйлэбл .. в результате у нас пройдет лишняя итерация цикла. Я не прав ?
2010-09-18 16:36

Сообщений: 1573

Re: выбор транка

iye:

Очень маловероятно ...
Так и будет ... ) (плюс, к новым вызовам, идет перезапись по диалстатусу ...)


Ошибка в том, что все вызовы работают с одной, глобальной, переменной. (вместо того, что бы получить из нее значение). А если устранить этот недостаток, то нужно будет отдельно следить, что бы она не вышла за свои пределы. И все равно - не будет гарантии.
Ответ - что ничего страшного, всего лишь лишний шаг (по диалстатусу) - не приемлем ...
При малом количестве транков, и большом кол. входящих (10 - это я поскромничал), допускаю ситуацию, когда вызов вообще не состоится ...

Вначале я не увидел этого до конца и подумал, что может быть имеет право на существование такой вариант (просто в нем больше упорядоченности - как виделось). Теперь вижу однозначно - нет!

Где нибудь на не нагруженной системе - он будет работать. Но в корне - он не правильный ...

2010-09-18 18:04

Добавить страницу в закладки:  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