Разработка быстрого импорта цен на сайт для 500.000 записей
1Цели и задачи
В условиях высокой волатильности цен на сырье и комплектующие, компания была вынуждена часто и оперативно обновлять розничные цены на сотни тысяч товарных позиций на сайте. Стандартный механизм импорта в системе управления сайтом (CMS) с этой задачей не справлялся: процесс обновления цен по файлу с 300-500 тысячами строк занимал неприемлемо много времени (до нескольких часов), блокируя другие процессы и фактически выводя сайт из актуального состояния на целый день. Заказчику требовалось высокопроизводительное решение, которое бы обновляло только цены, делало это максимально быстро, в фоновом режиме и с полным контролем над процессом.
2Проблема и аналитика
Главная проблема штатного импорта - его универсальность. Он заточен на обработку любых данных о товаре (описания, фото, свойства), что создаёт огромную нагрузку на систему. Нам же требовался точечный и быстрый «укол» - изменить одно единственное поле (цену) у сотен тысяч записей. Ключевыми задачами стали:
-
Обеспечение высокой скорости за счёт оптимизированных запросов к базе данных и итеративной обработки файла.
-
Гарантия отказоустойчивости: процесс не должен был «падать» из-за одной ошибочной строки в файле.
-
Предоставление прозрачного контроля: администратору необходимо видеть, что происходит, в реальном времени и иметь возможность управлять процессом.
Что мы сделали:
Спроектировали и внедрили высокоскоростной механизм импорта.
-
Разработанный скрипт читает исходный CSV-файл (ID товарного предложения, Новая цена) не целиком, а итерационно, блоками по 10 000 строк. Это позволяет не перегружать оперативную память сервера.
-
Для каждой строки скрипт выполняет точечный запрос к базе данных: находит товарное предложение по ID и обновляет только его поле «Розничная цена». Все остальные данные товара остаются нетронутыми.
-
Обработка ошибок «на лету»: если в строке файла обнаружена ошибка (пустое значение, некорректный ID, нечисловые символы в цене), эта строка пропускается, записывается в лог, а процесс немедленно переходит к следующей. Это гарантирует завершение обработки всего файла.
Создали профессиональный модуль управления в административной панели сайта.
Вместо запуска по «секретной ссылке» мы разработали полноценный интерфейс в админке сайта. Администратор загружает CSV-файл через привычный интерфейс и в один клик запускает импорт.


Импорт выполняется в фоновом режиме (в виде cron-задачи), не нагружая интерфейс и не мешая работе других сотрудников.
В модуле в реальном времени (с обновлением раз в минуту) отображается подробная статистика: количество обработанных и ошибочных строк, оставшееся время, прогресс-бар.

Реализована система полноценного логгирования. Все события (старт, ошибки, завершение) записываются не в файл, а в специальную таблицу базы данных, что надёжнее и удобнее для анализа. Лог доступен прямо в интерфейсе модуля с возможностью фильтрации (только ошибки, только успешные операции, поиск по ID товара) и сортировки.

Обеспечили полный контроль над процессом
В интерфейсе модуля предусмотрена кнопка «Остановить импорт». Её нажатие безопасно прерывает фоновую задачу. Это критически важная функция на случай обнаружения ошибки в файле или необходимости срочной остановки.

После завершения импорта система формирует итоговый отчёт с точным временем начала, окончания и общей длительности операции.
3Результаты внедрения
Мы реализовали профессиональный инструмент, который кардинально изменил процесс ценового мониторинга и сделал сайт гибким инструментом в условиях меняющегося рынка.
-
Скорость обновления повысилась в десятки раз. Задача, которая раньше занимала часы, теперь выполняется за минуты. Сайт практически мгновенно отражает новые ценовые политики.
-
Процесс стал безопасным и управляемым. Риск «положить» сайт долгим импортом устранён. Администратор имеет полный контроль: видит прогресс, анализирует ошибки в файле и может в любой момент остановить операцию.
-
Оперативность бизнеса вышла на новый уровень. Маркетологи и коммерческий отдел могут проводить гибкие ценовые эксперименты и мгновенно применять изменения на сайте, реагируя на действия конкурентов или изменения себестоимости.
-
Повышена эффективность работы сотрудников. Администраторы избавились от рутины ожидания и ручного разбора ошибок. Весь процесс централизован, прозрачен и требует минимального вмешательства.
Разработанный модуль не просто решил задачу быстрого обновления цен - он создал для компании стратегическое конкурентное преимущество в виде скорости и точности управления ключевым коммерческим параметром - ценой.

Нужен похожий проект?
Расскажите о задаче — покажем близкие по смыслу работы и предложим решение со сроками и бюджетом.
Похожие проекты




