Re: Очередь для исходящих звонков через GSM-шлюзы
meral: оптимально(минимум нагрузки на серер) получилося fastagi + табличка в sql с временем потранку,
все остальные варианты ошутимо грузят mysql и астериск и при большом уоличестве конектов фигово.
С чем сравнивали? От чего меньше загрузка сервера и базы(при одинаковом кол. запросов)? Разве запуск внешнего скрипта уменьшает загрузку? Чем хуже вариант использования хранения CDR в MySQL(стандартно поддерживается) и обращения к данным прямо из контекста, например:
...
exten => s,n,MYSQL(Connect connid localhost user pass dbname)
exten => s,n,MYSQL(Query resultid ${connid} SELECT\ SUM(billsec)\ FROM\ cdr\ WHERE\ calldate\ >\ \'2008-10-10 00:00:00\'\ AND\ userfield\ =\ \'gw1\')
exten => s,n,MYSQL(Fetch fetchid ${resultid} BILL)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,GotoIF($["${BILL}" > "6000"]?off-limit)
...
Для оптимизации количества запросов можно сделать, что бы шлюз израсходовавший лимит "помечался" глобальной переменной. При вызовах анализировать эту переменную, если не установлена, то обращаться к базе, и если лимит не израсходован, то звонить через этот шлюз. А если лимит вышел - устанавливать ее.
После этого запросы на использование этого шлюза и соответственно к базе(по этому шлюзу) прекратятся ... и т.д.
|