Я построил скребок, чтобы получить данные с другого сайта. В настоящее время скребок выполняется в командной строке на экране, поэтому процесс никогда не останавливается. Между каждым запросом я устанавливал интервал, чтобы все было спокойно. В одном отчете может быть 100 файлов, которые необходимо скачать. Также этот процесс имеет интервал после каждой загрузки.
Теперь я хочу добавить функциональность в бэк-энде, чтобы скрести на лету. Все отлично работает, я получаю первый набор данных, который имеет только 2 запроса. В пределах этих возвращенных данных я должен загрузить массив с файлами (может быть 10, может быть +100). Я хотел бы создать что-то, что пользователь сможет видеть в реальном времени, насколько далеко процесс загрузки.
С чем сталкиваюсь, когда у скребка есть 2 задания в окне браузера с до +20 загрузками, включая интервалы, чтобы держать вещи в тупике, это займет слишком много времени. Я думаю о том, чтобы сохранить файлы, необходимые для загрузки в таблицу базы данных, и обработать эту часть процесса обработки данных с помощью другого сценария оболочки (экрана) или cronjob.
Я задаюсь вопросом о том, насколько мои мысли хороши, излишни или есть какие-то лучшие примеры для обработки подобных процессов.
Спасибо за любой совет.
постскриптум Я занимаюсь разработкой на PHP
Если вы считаете, что это излишне, вы можете запустить скрипт и подождать, пока задача будет завершена, прежде чем запускать снова.
В основном вам нужно реализовать очередь сообщений где обработчик запросов http (фронт-контроллер?) отправляет сообщение для извлечения страницы, и один или несколько рабочих выполняют работу, дополнительно отправляя в очередь больше сообщений для загрузки файлов.
Существует множество брокеров MQ, но вы можете реализовать свой собственный с базой данных в качестве хранилища очередей.