Давайте представим это:
- Мне нужно загрузить XML-документ с URL-адреса;
- Я должен разработать этот документ и сохранить его информацию в базе данных, создавая или обновляя множество сущностей.
Я думаю, что лучший способ - использовать очереди. Или, может быть, я также могу использовать cronjobs.
Моя проблема заключается в следующем: если я использую одно и то же приложение для выполнения тяжелых задач, а также для показа конечному пользователю результатов этих тяжелых задач, может случиться так, что тяжелые задачи замедлят работу основного веб-сайта.
Возьмем более конкретный пример из реальной жизни: Google Search Console (или любое другое приложение, которое выполняет сложные задачи и показывает результаты конечному пользователю).
Google Search Console получает XML-карту, затем начинает загрузку каждой веб-страницы, на каждой веб-странице выполняет большой анализ, затем сохраняет результаты в базу данных, чтобы конечный пользователь мог видеть ошибки своего веб-сайта и другую полезную информацию.
Итак, предположим, что я хочу снова создать Google Search Console как приложение Symfony, каковы возможные подходы?
Я думаю, что я обязательно должен использовать очереди, но приложение, которое загружает веб-страницы, и приложение, которое обрабатывает эти веб-страницы, и общедоступный интерфейс, показывающий результат этих операций, — это одно и то же приложение или два или три отдельных приложения?
То есть мне нужно создать уникальное приложение, которое делает все эти вещи, или я создаю приложение для загрузки веб-страниц, одно для обработки этих веб-страниц и еще одно для показа пользователю результатов?
Я много думаю об этом, и я не могу найти хороший дизайн для подражания.
Поскольку моя цель — создать несколько приложений для каждой из этих задач, чтобы они работали, но кажется, что создание нескольких приложений Symfony — не лучший выбор: Несколько приложений Symfony 2?
Так что я действительно не знаю, по какому пути идти: несколько приложений или одно большое приложение? И если я использую одно большое приложение, должен ли я использовать cronjobs или я все равно использую очереди?