Когда импорт большого файла зависает, каталог не обновляется: товары, цены, остатки или характеристики остаются старыми.

Обычно это всплывает при росте ассортимента. Маленький файл работал, а реальная выгрузка от поставщика уже не проходит.

Коротко: большой импорт нужно обрабатывать порциями, с логами, прогрессом и защитой от дублей.

Почему это происходит

Зависания возникают из-за лимита памяти, max_execution_time, медленных запросов к базе, отсутствия индексов, загрузки всего файла в память, повторной обработки дублей или слишком тяжелой логики на каждую строку.

Что проверить сначала

  • размер файла и формат
  • лимиты PHP и веб-сервера
  • как парсится файл: целиком или потоково
  • есть ли индексы для поиска товаров
  • на каком шаге импорт останавливается

Как я решаю такую задачу

Я превращаю импорт из одной тяжелой операции в контролируемый процесс.

  • повторяю импорт на копии файла
  • смотрю логи и место зависания
  • разбиваю обработку на партии
  • оптимизирую запросы и индексы
  • добавляю статус, ошибки и повторный запуск

Что подготовить

  • пример большого файла
  • описание полей
  • куда импортируются данные
  • доступ к сайту и базе
  • что должно обновляться: товары, цены, остатки

Каким должен быть результат

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

Чего лучше не делать

Не поднимайте лимит памяти бесконечно. Если алгоритм грузит весь файл в память, проблема вернется на следующем росте каталога.

FAQ

Лучше CSV или XML?

CSV обычно легче для больших таблиц, XML удобен для сложной структуры, но требует аккуратного потокового парсинга.

Можно ли импортировать по расписанию?

Да, после стабилизации процесса можно запускать импорт cron-задачей.

Что делать с дублями товаров?

Нужен уникальный ключ: артикул, внешний id или связка поставщик плюс артикул.

Можно ли показывать прогресс?

Да, если импорт разбит на этапы и сохраняет состояние.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку или пример ошибки, и я скажу, как безопасно подойти к исправлению.

Итог

Зависший импорт лучше не лечить увеличением таймаутов, а переделать в надежный пакетный процесс с понятной диагностикой.