Задать вопрос

Как залить в БД большой файл 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
  • Вопрос задан
  • 194 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
flapflapjack
@flapflapjack
на треть я прав
Просто разбейте в блокноте xml файл на несколько xml'ов, и по одному добавляйте в ннсколько заходов выполнения. Одно выполнение скрипта чтобы загружало одну часть xml
Ответ написан
Adamos
@Adamos
$informations = [];
foreach ($data as $item) {
  $informations[] = new Data([
    'type'  => $item->type,
    ...............
    ...............
  ]);
}
Data::insert($informations);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽