Я столкнулся с небольшой проблемой.История выглядит следующим образом:
У меня есть система архивирования документов (написанная на PHP), которая работает на нескольких клиентах (23 в настоящее время).В их системе они имеют только свои документы.Каждую ночь их нужно синхронизировать с основной базой данных на сайте (центральным сервером).У меня есть доступ к каждой базе данных MySQL с центрального сервера, поэтому подключение к ним не составляет проблем.
У меня есть скрипт, который подключается к базе данных клиента, выбирает все записи из таблицы, где столбец синхронизации = '0000-00-00 00:00:00 '(по умолчанию, чтобы указать, что он не был синхронизирован).Затем я перебрал бы каждую запись, вставил ее на центральный сервер и установил время синхронизации записи базы данных клиента во время выполнения сценария.Это работает, но очевидно имеет большие накладные расходы с несколькими запросами, и я только что заметил проблемы сейчас.
Каждый клиент может генерировать до 2000 - 3000 нечетных документов в день.С этими большими числами это занимает слишком много времени (1 сек / 2 документа).
Есть ли лучшее решение моей проблемы?Предпочтительно PHP-решение на основе сценариев, так как мне нужно делать логи, чтобы проверить, все ли прошло успешно.
Спасибо
РЕДАКТИРОВАТЬ: Мой текущий процесс:
- Выбрать все несинхронизированные данные
- Начать транзакцию
- Вставить запись в центральный сервер базы данных
- Выбрать запись документа с клиента
- Вставитьдокумент на центральный сервер базы данных
- Обновление столбца синхронизации на клиенте
- Обновление столбца синхронизации на сервере
- Подтверждение транзакции
Это скриптзапустить на центральном сервере.Теперь, когда я подумаю об этом, я могу удалить шаг 7 и сделать его частью шага 5, но это не приведет к значительному сокращению времени обработки.