Как залить в БД большой файл XML?

Доброго дня всем.
Есть довольно большой файл xml, примерно 50.000 строк получится. Получаю посредством выбора с комптьютера
$data = new \SimpleXMLElement($request->file('feed'), null, true);

Далее его нужно залить в БД. Делаю как обычно:
foreach ($data as $item) {

                $information = new Data([
                    'type'  => $item->type,
                    ...............
                    ...............
                ]);

            $information->save();

        }


На локальном компе в OpenServer все проходит нормально. Но на хостинге проблемы - в браузере ошибка
504 Gateway Time-out
В логах сервера
[Mon Mar 18 22:49:55.049174 2019] [cgi:error] [pid 27832] (70008)Partial results are valid but processing is incomplete: [client 37.115.231.73:37864] AH01225: Error reading request entity data, referer: https://vkohan.tk/feed/create?id=1


Я так понимаю, нужно увеличить параметр max_execution_time (в OS стоит 180), но желательно к хостеру не обращаться.
Мне советовали разбить файл на части и грузить в очереди, но я пока не слишком силен в этом.
Подскажите, как правильно организовать загрузку?
Спасибо

Версия Laravel 5.8
PHP 7.1
MySQL - 5.7
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
flapflapjack
@flapflapjack
на треть я прав
Просто разбейте в блокноте xml файл на несколько xml'ов, и по одному добавляйте в ннсколько заходов выполнения. Одно выполнение скрипта чтобы загружало одну часть xml
Ответ написан
Adamos
@Adamos
$informations = [];
foreach ($data as $item) {
  $informations[] = new Data([
    'type'  => $item->type,
    ...............
    ...............
  ]);
}
Data::insert($informations);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы