[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
forum.calloffice.ru • Просмотр темы - Обновление базы для звонков

Обновление базы для звонков

Обсуждение общих вопросов продукта Call Office

Модератор: McBurns

Обновление базы для звонков

Сообщение Denis » 09 фев 2015, 13:50

Добрый день.

Нам необходимо периодически обновлять базу клиентов для автообзвона.
Сейчас она обновляется батником, который вызывается несколько раз в день.
Проблема в том, что используемая база MsSQL при этом зависает, если пытаться записать статус звонка. Вылазит сообщение odbc, что таблицы заблокированы и все останавливается.

Есть какая-нибудь возможность обойти это?
Мне только в голову приходит создавать в батнике синхронизации файл-семафор, завести в ваших скриптах объект ActiveXObject("Scripting.FileSystemObject") и проверять при записи статуса отсутствие семафора.
Или может быть есть путь проще?
Denis
 
Сообщений: 22
Зарегистрирован: 16 янв 2015, 14:22

Re: Обновление базы для звонков

Сообщение Jugin » 10 фев 2015, 02:47

Здравствуйте,
Вообще MsSQL неплохо работает в режиме многопользовательского доступа. Скорее всего, сразу вы обновляете много записей, что вызывает блокировку всей таблицы, и, соответственно, проблемы при записи результата звонка.
Могу предложить следующие варианты:
1. Если есть возможность, работать напрямую с данными, которые меняются, это позволить вообще избежать процедуры обновления данных и данные будут всегда актуальны.
2. Если это возможно, обновлять по небольшому количеству записей, так что бы операция обновления не приводила к блокировке всей таблицы. Например, выполнять сравнение и изменять только измененные записи небольшими порциями или единичными запросами.
3. Если есть возможность, обновлять данные в период времени, когда программа не звонит, например, ночью.
4. Можно сделать семафор в виде файла, как вы описали, либо в базе сделать отдельную таблицу и писать семафор туда.
Более точно можно посоветовать, если вы поясните, как именно вы обновляете данные, в каком виде они хранятся, что именно делает батник.
Jugin
Администратор
 
Сообщений: 33
Зарегистрирован: 20 ноя 2012, 12:19
Откуда: Россия, Барнаул

Re: Обновление базы для звонков

Сообщение Denis » 10 фев 2015, 07:22

Сложность в том, что номера для обзвона берутся из нескольких мест, так что с источником напрямую работать невозможно.
Я вообще стираю таблицу ring со всеми телефонами и заполняю ее заново.
Попробую по одному номеру обновлять, без общего стирания, хотя тут тоже возможны проблемы при звонке по телефону, который прямо сейчас удаляется.
Denis
 
Сообщений: 22
Зарегистрирован: 16 янв 2015, 14:22

Re: Обновление базы для звонков

Сообщение Jugin » 10 фев 2015, 08:12

В этом случае, если вы удаляете все записи из таблицы для обзвона, конечно же проблемы будут. Не совсем понятно, если вы все равно удаляете данные, статусы звонков получается тоже удаляются? Тогда зачем их вообще сохранять после звонка?
Могу предложить два варианта:
1. Записывать статус звонка в отдельную таблицу.
2. Измененные номера, которые берутся из нескольких мест, предварительно формировать в отдельной таблице. Затем эту таблицу сравнивать с рабочей и изменения вносить в рабочую таблицу. Именно изменения, а не полное удаление всех данных с последующей вставкой.
С точки зрения правильности работы с данными, удалять телефон, по которому выполняется звонок не совсем правильно. Возможно не совсем верно продумана работа с данными для обзвона. Если объясните подробнее зачем вы так делаете и нужны ли вам результаты звонков, посоветую другие варианты.
Jugin
Администратор
 
Сообщений: 33
Зарегистрирован: 20 ноя 2012, 12:19
Откуда: Россия, Барнаул

Re: Обновление базы для звонков

Сообщение Denis » 10 фев 2015, 10:55

Результаты звонков в отдельную таблицу сохраняются, я ее не трогаю, занимаюсь только таблицей для обзвона.

Обновление записей по одной я уже сделал - вроде все работает, если номер телефона уже есть в таблице, я обнуляю поле Attempts, если нет - вставляю.
Последним шагом удаляю все незатронутые записи. Тут теоретически может быть блокировка, но уже ничего не сделать.
Denis
 
Сообщений: 22
Зарегистрирован: 16 янв 2015, 14:22

Re: Обновление базы для звонков

Сообщение Denis » 11 фев 2015, 13:18

Ничего не вышло, я даже от удаления отказался, но все равно в момент обновления большой шанс попадания на блокировку и остановки обзвона.
Возвращаясь к началу темы, не подскажите, как мне определить из скрипта наличие некого файла-семафора?
Denis
 
Сообщений: 22
Зарегистрирован: 16 янв 2015, 14:22

Re: Обновление базы для звонков

Сообщение Jugin » 12 фев 2015, 03:52

Jugin
Администратор
 
Сообщений: 33
Зарегистрирован: 20 ноя 2012, 12:19
Откуда: Россия, Барнаул

Re: Обновление базы для звонков

Сообщение Denis » 12 фев 2015, 07:07

Понятно, спасибо.
Denis
 
Сообщений: 22
Зарегистрирован: 16 янв 2015, 14:22


Вернуться в Общие вопросы

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron