@daniel_wesson

Как правильнее загрузить большое кол-во данных в БД в laravel?

Добрый день, я создаю интернет-магазин на laravel, товары в который должны будут импортироваться из ВК через Market API. Администратор в панели управления нажимает кнопку "Import" и все товары с группы ВК должны записаться в БД. Данных очень много, поэтому, сервер за один присест не сможет "проглотить" всё. В конструкторе интернет-магазинов Shopify данные о товарах из файла импортируются в течение минут 15, то есть организована загрузка в фоне. Как такое можно реализовать на laravel? Читал в доках про очереди, но не совсем понял как правильно их использовать в данной задаче. Кто знает, помогите пожалуйста.
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Нажимаешь на импорт, отправляешь обычный хттп пост запрос (доки), в обработчике создаешь джобу и кидаешь в очередь (доки), в джобе пишешь логику импортирования (может хоть час, хоть два, хоть десять лет импортироватся - главное что бы сервак не падал, и не забудь написать имя очереди, отличное от default).

Собственно все. Дальше либо поднимаешь очереди супервизором (доки), либо прикручиваешь horizon (доки) и, есстественно, какой-то адекватный драйвер для этих очередей, как то rabbitmq или redis (и драйвер соответсвующий включаешь (доки)).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Как работать с джобами, написали выше. Если есть желание оптимизировать саму вставку данных в бд, то можно в Джобе писать данные в файл, а затем загрузить в бд через load data infile. Будет существенно быстрее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы