Это более архитектурный вопрос.Как реализовать трассировку для долгосрочного импорта в Laravel
Я собираюсь закодировать кучу реализации импорта. Все они ожидают некоторые параметры (т. Е. Файл CSV), а затем приступят к некоторому времени для продолжения. В моем предыдущем проекте я использовал для отправки этих Импорт в фоновом режиме с помощью команды «shell_exec()» и, кроме того, отслеживал файл журнала в браузере, чтобы сообщить о состоянии. Моя большая надежда в том, что Ларавель берет на себя здесь, чтобы упорядочить все эти ручные работы.
На данный момент мой вопрос будет касаться предлагаемой архитектуры класса.
Мои требования для связки импорта являются:
- Каждый импорт должен работать как фоновый процесс
- прогресс монитора в браузере (и логфайл)
- импорт Начало в консоль и через HTTP
Сейчас я планирую использовать «Работа» в L5.1 для реализации основного импорта. То, с чем я борюсь, - это реализация какого-то «индикатора прогресса» и мониторинга (самых последних) «сообщений журнала» в браузере. Мне не нужно настоящее «живое» представление через сокеты, но должно быть возможно регулярно обновлять представление прогресса работающего импорта.
- Есть ли у кого-нибудь подсказки, как реализовать этот прогресс?
Мой подход до сих пор: Прочитайте файл CSV, поместить каждую строку в элемент очереди и следить за очередью. Сообщения журнала могут инициировать событие, которое заполняет стек из последних сообщений журнала. (Я могу работать в условиях гонки, поскольку некоторые линии могут зависеть от предыдущей обработки другой линии)
Да, это должно быть сделано. С моим вопросом я также был доволен тем, что Laravel приносит с собой из коробки или какие шаблоны дизайна рекомендуется здесь. – patriziotomato
@ redless81 Я не уверен, что вы должны смотреть на вещи таким образом;) Всегда выбирайте самое простое решение. Шаблоны предназначены для упрощения сложных вещей. Мне не нравится Laravel Jobs в 5.1. Они кажутся искусственными для меня. –
Я согласен и не согласен;) Мне нужно импортировать около 50 МБ данных CSV, чтобы распространять его по нескольким таблицам. Процесс импорта может занять несколько часов. Я думаю, мне нужно рассмотреть такие аспекты, как масштабируемость и т. Д. Также я хочу воспользоваться преимуществами архитектуры, предоставляемой инфраструктурой, потому что она привносит какой-то стандарт для других разработчиков, делает ее более проверяемой. Однако я согласен с тем, что вам следует не использовать шаблоны, если они вам не нужны. – patriziotomato