Size: a a a

Laravel для начинающих

2020 April 21

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
А дайте ссылочку как переносить в очередь, пож
чем читать смотри выше, очереди это докумеyтация laravel
источник

MD

Michael Domansky in Laravel для начинающих
Egor Gruzdev
чем читать смотри выше, очереди это докумеyтация laravel
ага, смотрю, спасибо.
источник

EG

Egor Gruzdev in Laravel для начинающих
Иван Лещенко
Он работает с новыми версиями пыха?
там особо ничего нет один класс расширяющий всроенный в php simlexml
источник

EG

Egor Gruzdev in Laravel для начинающих
но у меня он почему то лежит не через композер, видимо я что-то допиливал
источник

EG

Egor Gruzdev in Laravel для начинающих
Egor Gruzdev
но у меня он почему то лежит не через композер, видимо я что-то допиливал
ничего только добавил метод преобразования xml to array
источник

MD

Michael Domansky in Laravel для начинающих
Иван Лещенко
Делай импорт чанками
Как-то на одном проекте какое-то время назад я разбивал процесс на 3 составляющие:
1. загрузка файла на диск
2. разбор файла построчно и копирование тексте нод во временную таблицу через xmlsimpleread, кажется
3. разбор из временной таблицы туда, куда нужно.

И все 3 скрипта вешал на крон. Получалось масштабируемо, но приходилось играть с количеством записей за раз, чтобы уложиться в оперативку.

Это геморное решение? Или это норм процесс?
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Michael Domansky
Как-то на одном проекте какое-то время назад я разбивал процесс на 3 составляющие:
1. загрузка файла на диск
2. разбор файла построчно и копирование тексте нод во временную таблицу через xmlsimpleread, кажется
3. разбор из временной таблицы туда, куда нужно.

И все 3 скрипта вешал на крон. Получалось масштабируемо, но приходилось играть с количеством записей за раз, чтобы уложиться в оперативку.

Это геморное решение? Или это норм процесс?
Не уверен насчёт построчного чтения
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Ты же не знаешь, какое там внутри форматирование
источник

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
Как-то на одном проекте какое-то время назад я разбивал процесс на 3 составляющие:
1. загрузка файла на диск
2. разбор файла построчно и копирование тексте нод во временную таблицу через xmlsimpleread, кажется
3. разбор из временной таблицы туда, куда нужно.

И все 3 скрипта вешал на крон. Получалось масштабируемо, но приходилось играть с количеством записей за раз, чтобы уложиться в оперативку.

Это геморное решение? Или это норм процесс?
зависит от xml, у меня были xml с справочниками отелей (10-20 gb) и связи между записями в xml не было, поэтому все загружалось линейно
источник

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
Как-то на одном проекте какое-то время назад я разбивал процесс на 3 составляющие:
1. загрузка файла на диск
2. разбор файла построчно и копирование тексте нод во временную таблицу через xmlsimpleread, кажется
3. разбор из временной таблицы туда, куда нужно.

И все 3 скрипта вешал на крон. Получалось масштабируемо, но приходилось играть с количеством записей за раз, чтобы уложиться в оперативку.

Это геморное решение? Или это норм процесс?
если нужна разбивка на три процесса и делай три job выполняющихся постепенно
https://laravel.com/docs/7.x/queues#job-chaining
источник

MD

Michael Domansky in Laravel для начинающих
Иван Лещенко
Ты же не знаешь, какое там внутри форматирование
быстро не могу найти исходники те, но там был кусок что-то про XMLReader:BEGIN_ELEMENT, смотришь если он называется как начало блока и копируешь внутренности этого блока. и идешь дальше построчно в поисках следующего начала блока
источник

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
быстро не могу найти исходники те, но там был кусок что-то про XMLReader:BEGIN_ELEMENT, смотришь если он называется как начало блока и копируешь внутренности этого блока. и идешь дальше построчно в поисках следующего начала блока
возьми то что тебе скинули, библиотека так и делает, она читает до указанного тобой блока и делает callback вызов с содержимым этого блока, который может быть небольшой частью xml
—-
у все будут работать не надо в ручную парсить как строки, все пашет, памяти не  жрет
источник

MD

Michael Domansky in Laravel для начинающих
Egor Gruzdev
возьми то что тебе скинули, библиотека так и делает, она читает до указанного тобой блока и делает callback вызов с содержимым этого блока, который может быть небольшой частью xml
—-
у все будут работать не надо в ручную парсить как строки, все пашет, памяти не  жрет
Спасибо.
источник

MD

Michael Domansky in Laravel для начинающих
А вообще, если не переводить эту задачу в очередь (или вообще когда говорим не о такой задаче), то увеличения времени выполнения скрипта до 1часа - это норм решение? Или так лучше не делать?
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Michael Domansky
А вообще, если не переводить эту задачу в очередь (или вообще когда говорим не о такой задаче), то увеличения времени выполнения скрипта до 1часа - это норм решение? Или так лучше не делать?
А зачем, если можно выполнить вне скоупа запроса?
источник

MD

Michael Domansky in Laravel для начинающих
Иван Лещенко
А зачем, если можно выполнить вне скоупа запроса?
Для генерации сложного отчета пользователю или вроде того.
источник

ИЛ

Иван Лещенко... in Laravel для начинающих
Michael Domansky
Для генерации сложного отчета пользователю или вроде того.
Отправишь по вебсокетам
источник

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
Для генерации сложного отчета пользователю или вроде того.
это делаетя в очереди, а потом пользователя уведосляют что отчет готов, он же не будет сидеть 1 час и ждать пока ты "разродишься" ответом
источник

MD

Michael Domansky in Laravel для начинающих
Egor Gruzdev
это делаетя в очереди, а потом пользователя уведосляют что отчет готов, он же не будет сидеть 1 час и ждать пока ты "разродишься" ответом
Да, так намного лучше с точки зрения пользовательского поведения. Я просто не раз видел системы, у которых сидишь и ждешь, пока оно выполняется.
источник

EG

Egor Gruzdev in Laravel для начинающих
Michael Domansky
Да, так намного лучше с точки зрения пользовательского поведения. Я просто не раз видел системы, у которых сидишь и ждешь, пока оно выполняется.
у меня вопрос, это все еще разговор про xml в 1Gb или мы перешли в другую ветку.
пользователь будет через http передавать xml портянку на 1Gb?
источник