Я получил несколько отзывов о веб-приложении на основе PHP / MySQL, которое находится в процессе разработки. Приложение представляет собой сайт для членов, который использует локальную базу данных для хранения данных для каждого пользователя по дням. Эти данные поступают из внешнего API и должны ежедневно автоматически синхронизироваться, чтобы моя локальная БД содержала последние данные. Это методология, которую я имею в виду:
У меня есть 2 задания Cron:
Построитель очереди
Работник очереди
.. и 3 таблицы базы данных:
Данные пользователя (хранит все имеющиеся у меня пользовательские данные, если таковые имеются).
Данные пользователя (список всех участников, включая пользователей, для которых у меня пока нет данных, или новые регистрации).
- Очередь обработки
Построитель очередей - это PHP-скрипт, который будет запускаться через Cron через регулярные промежутки времени. Это будет:
Сравните таблицы Сведения о пользователе и Данные пользователя , чтобы определить, для каких новых пользователей у меня еще нет данных. Для этих пользователей он создаст список URL-адресов, начиная с 01.01.11 и по сегодняшний день, и вставит их в таблицу Очередь обработки (это потому, что я хочу получить данные с начала год для всех моих пользователей).
Анализ таблицы User Data , чтобы определить, когда данные каждого пользователя были синхронизированы в последний раз, и создание списка URL-адресов с последней синхронизированной даты до текущего дня. Они также будут вставлены в таблицу Очередь обработки .
Таким образом, Таблица Очереди обработки будет содержать список всех URL-адресов, которые необходимо запросить.
Работник очереди также является сценарием PHP Cron, который будет:
- Выберите первые 20 элементов в таблице Очередь обработки , получите их содержимое с помощью CURL multi, error-check, а затем удалите первые 20 строк из таблицы. Я разбиваю его на 20 URL за раз, потому что, если я обрабатываю слишком много URL, скрипт может зависнуть или мой хост может постучаться в мою дверь, оснащенный дробовиком.
Это также будет регулярно выполняться через задание Cron, поэтому идея заключается в том, что синхронизация данных должна быть автоматизирована, а пользователи должны иметь обновленные данные. Мои вопросы:
Каковы общие мысли о моей методологии? Есть ли побочные эффекты от этого? Я разработчик-хобби, не имеющий опыта работы с CS, поэтому всегда стремлюсь к критике и изучению лучших практик! =)
Когда новый пользователь зарегистрируется, я планирую дать им «ваши данные могут занять xx минут для синхронизации», перенаправляя их на ресурсы «Приступая к работе» и т. Д. Это, вероятно, хорошо для моего первоначального выпуска, но дальше трек, который я хотел бы уточнить, чтобы пользователи получали уведомление по электронной почте, когда синхронизация готова или может видеть% прогресса. Легко ли в моем нынешнем решении это подходит? Или у меня будут головные боли вниз по дорожке?
Мнения приветствуются! Большое, ОГРОМНОЕ спасибо заранее - надеюсь, я это четко объяснил!