1b.app
Скопирована ссылка -

Оцените доработку действия

Сейчас механизм выборки обновленных данных, в действии "Импорт продуктов из CMS ExtraParts", осуществляется запросом:
"SELECT * FROM `price` WHERE `post_date` >= '{$postDateFrom}' ORDER BY `price`.`id` ASC"
Где в переменной '{$postDateFrom}' используется время последнего запуска действия.
Проблема в том, когда в `price` резко появляется большое количество обновленных данных (например 4.6 миллионов), действие берет в работу большой массив данных (около 12G), процесс обработки которого длится часами (около 5час.), что приводит к тайм-аутов или ошибок в экспортируемых продуктах или других сбоев экспорта данных.
Необходимо дорабатывать механизм выборки обновленных данных:
1. Братья в бробку ограниченное (например указанное в настройках 100 000 строк) количество данных за один запуск действия, обрабатывало этот массив и прекращало работу действия.
При следующем запуске действия, в обработку брать следующее количество обновленных данных и так далее.
2. Если одновременно (параллельно) работают два и более действия экспорта - данные между ними должны делиться, чтобы не обрабатывать каждым из действий одни и те же данные.
Оригинальный вопрос доступен на версии: ua

Ответы:

Уточните пожалуйста проблема в том что это все долго работает или в том что дает нагрузку на сервер? Если в том что долго работает, мы можем влить данные паралельно потоков так в 30-40, если в том что грузит сервер то уже другой вопрос.


Олександр Григорович писал/а:
Брати в бробку обмежену (наприклад вказану в налаштуваннях 100 000 рядків)

ну и если бить по 100к то Вы никогда не догоните актуальное состояние.
22.04.2024, 13:28

Возможно так же можно ускорить загрузку товаров, чтобы это было в Х раз быстрее на таком к-ве
22.04.2024, 13:29

Да, проблема в том что очень долго работает, и чем дольше длится этот процесс, тем выше вероятность сбоя экспорта.
Ресурсов сервера хватает, по этому я и предложил экспортировать частями и параллельными действиями
22.04.2024, 13:56


Александр Григорьевич писал/а:
тем выше вероятность сбоя экспорта

да а какие сбои вы наблюдаете сейчас в таких ситуациях?
22.04.2024, 13:58
Оригинальный комментарий доступен на версии: ua


Отдел Заботы
OneBox production писал/а:

Александр Григорьевич писал/а:
тем выше вероятность сбоя экспорта

да а какие сбои вы наблюдаете сейчас в таких ситуациях?

Чаще всего если экспорт длится сильно долго, то продуктам начинает затирать бренды или создавать новые без бренда (переменная $brandid возвращает пустое значение...) - это создает большие проблемы.
22.04.2024, 14:11

если проблема только в этом, то это фикситься за 1ч доработки.
22.04.2024, 14:26

Если есть решение как ускорить экспорт, что позволит успешно заливать такое количество и при этом избавиться от потери бренда, то выставляйте счет.
22.04.2024, 14:34

это решение позволит запомнить весь список брендов и искать их из кеша, это так же немного ускорит импорт но не думаю что глобально. Давайте попробуем, выставлю счет
22.04.2024, 15:30


Отдел Заботы
OneBox production писал/а:
это решение позволит запомнить весь список брендов и искать их из кеша, это так же немного ускорит импорт но не думаю что глобально. Давайте попробуем, выставлю счет

Одного решения брать бренд из Кеша будет недостаточно, я проверял.
Полностью отключал в классе метод получения бренда, его обновление - ускоряет но недостаточно.

Лить в несколько потоков получится реализовать ?
22.04.2024, 16:08

Плевать на скорость, если по итогу все зальет нормально. Если лить в несколько потоков мы можем сильно нагрузить внешнюю базу и свою.
22.04.2024, 16:32

Можем сделать по-другому, я делаю чтобы Ваша загрузка 4 лямов записей работала например час, после Вы оплачиваете по затраченному времени.
22.04.2024, 16:33


Отдел Заботы
OneBox production писал/а:
Можем сделать по-другому, я делаю чтобы Ваша загрузка 4 лямов записей работала например час, после Вы оплачиваете по затраченному времени.

Согласен, дольше будем гадать, по ходу дела разберётесь.
Делайте, по факту оплачу.
22.04.2024, 16:38

Пожалуйста, присоединяйтесь к диалогу. Если вам есть что сказать - пожалуйста, напишите комментарий. Для входа потребуется мобильный телефон и смс-код для идентификации. Войти и написать комментарий