Комментарии 14
Извините, если я чего не понял, но, если абонент перешёл к другому оператору со своим номером, то этот скрипт будет выдавать неверные результаты?
0
Почему решили отказаться от хранения в бд? У Вас при каждом звонке читаются все данные. В бд был бы поиск по дереву, индекс, кеширование…
0
Как минимум, можно разделить один файл, на кучку по префиксам. Тогда просматривать будем файл меньше -> быстрее. sqlite безусловно будет быстрее, там ведь есть индексация.
+1
Чем CSV не БД?
0
БД вполне себе, точнее ХД (Хранилище данных), но не СУБД, и думается мне основной посыл именно в отказе от СУБД, хотя мотивация лично мне не понятна. Астериск прекрасно умеет общаться с mysql и postgresql, не исключаю, что и с sqlite тоже. В том же sqlite хранить эти данные не сильно дороже выйдет, а скорости работы добавит ощутимо.
0
Была такая задача какое-то время назад.
Правда мне дали .xls файл на 66000 строк примерно. Так как его все равно надо было экспортировать я быстренько набросал скрипт фильтранувший это все на предмет одинаковых регионов и дополняющих друг други промежутков, чтобы точно сделать файл с самыми крупными возможными промежутками отличающимися регионами. На удивление вышло 2400 строк в итоге. И отсортировать все эти промежутки как числа по возрастанию.
Поиск в этом файле принимая номер за число (то есть тупо с самого начала пока число не станет меньше начала текущего промежутка, и если оно при этом попало в предыдущий промежуток — значит попал) занимает миллисекунды и имеет сложность O(n).
Тоже обошелся без базы, просто объявляю все это массивом в начале перлового скрипта.
Правда мне дали .xls файл на 66000 строк примерно. Так как его все равно надо было экспортировать я быстренько набросал скрипт фильтранувший это все на предмет одинаковых регионов и дополняющих друг други промежутков, чтобы точно сделать файл с самыми крупными возможными промежутками отличающимися регионами. На удивление вышло 2400 строк в итоге. И отсортировать все эти промежутки как числа по возрастанию.
Поиск в этом файле принимая номер за число (то есть тупо с самого начала пока число не станет меньше начала текущего промежутка, и если оно при этом попало в предыдущий промежуток — значит попал) занимает миллисекунды и имеет сложность O(n).
Тоже обошелся без базы, просто объявляю все это массивом в начале перлового скрипта.
0
Настроить запросы к базе, даже SQLite, вряд ли заняло бы дольше. А работать будет быстрее.
0
6 лет работал с asterisk а про "__" не знал. Спасибо большое :)
На практике как используете? Set(CALLERID(name) = ${reg}), а у операторов ip-телефоны показывающие всю информацию из callerid(all)? Или вы это на практике вообще не используете?
На практике как используете? Set(CALLERID(name) = ${reg}), а у операторов ip-телефоны показывающие всю информацию из callerid(all)? Или вы это на практике вообще не используете?
0
Это, конечно, перл, но разберётесь :)
Для телефонии обычно интервалы номеров фуфу как неудобно, а префиксы — это самое то.
http://nw-wind.livejournal.com/227076.html
Я когда-то давно написал программу преобразования интервалов в минимальный набор префиксов.
Пользуйтесь!
Для телефонии обычно интервалы номеров фуфу как неудобно, а префиксы — это самое то.
http://nw-wind.livejournal.com/227076.html
Я когда-то давно написал программу преобразования интервалов в минимальный набор префиксов.
Пользуйтесь!
0
Спросил у маркетологов и получил ответ о том, что было бы неплохо иметь возможность фиксации региона обращения клиента. А тут и статья освежила суть идеи. Когда то делал проект LCR с использованием информации с сайта Россвязи. Только в тот раз были сформированы таблицы в БД и дополнены колонками с ценами операторов. Думаю в этот раз я опять поработаю с БД, но буду добавлять в CDR кастомное поле. Далее будем просто делать отчёт из CDR и получим то что нужно. Может и какие другие варианты взбредут в голову.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Определение региона по номеру телефона в Asterisk без использования БД