Оптимизация буфера импорта прайсов(исключение затормаживания работы страницы прайсов при переполнении буфера импорта)

Материал из MstarProject Manual
Перейти к: навигация, поиск

Описание механизма

Функционал предназначен для оптимизации загрузки файлов прайсов на сайт.

Это особенно актуально, если в загружаемых файлах идет более 400-500 тыс позиций. Когда сайт еще не заполнен данными, то стандартный алгоритм справляется с нагрузкой. Но по мере роста кол-ва записей в таблице прайса проекта, загрузка файлов с ценами на сайт будет замедляться.

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

В новом алгоритме после получения данных с файлов прайсов перенос их в прайс сайта происходит частями в фоне, что не дает блокировать ни сайт, ни сервер.
Так же добавлено несколько важных констант:

price:is_stop_load - полная остановка загрузки прайсов
price:limit_board_records_buffer - ограничение на размер буфера, по умолчанию 2млн. записей, если в буфере насобиралось больше записей, чем указано в константе, процесс обработки следующего файла не стартует, ожидает, пока буфер не будет обработан/очищен.
price:limit_board_records_cron_buffer - граничное значение крон-буфера, по умолчанию 5млн. записей.
По крону каждый час (константа price_cron_check_status:time_board_letter_minutes) делается контроль и если кол-во записей превышает указанные значения в константах, выполниться отправка письма на почтовые ящики из константы price_cron_check_status:alert_emails с информацией о возможных проблемах с загрузкой прайсов.

Так же как и раньше остается проверка на сбой при приеме прайса, проверка по константе price:break_global_load_file_in_minutes, по умолчанию 60 минут, если по загружаемому файлу нет активности более этого интервала, прием его переходит в статус "Остановлен", а его записи, если они есть удаляются из буфера.


Естимейт базовой версии задания - 5ч

Вернуться к списку модулей: Модули_пакет_Експерт_-_Документация