Перейти к содержимому


[дополнение] импорт CSV-файла любого размера


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 September 2015 - 02:15 PM

Штатный импорт товаров и категорий из CSV-файла работает следующим образом:
1. весь CSV-файл целиком заносится в память (в двумерный массив строка/столбец);
2. в цикле по всему этому массиву происходит распознавание товаров-категорий и их добавление-обновление;
Понятно, что эта процедура занимает какое-то время. Тем большее, чем больше товаров и категорий в CSV-файле и чем меньше производительность сервера.
Дефолтовое ограничение времени выполнения PHP-скриптов (max_execution_time) составляет 30сек и подавляющее большинство хостеров запрещают его изменение функцией set_time_limit() и настройкой php_value в .htaccess.
Начиная с некоторого размера файла (количества товаров) процедура импорта не успевает выполниться за отведенное время и обрабатываются только первые NNNN товаров. Обычно NNNN равно одной-двум-трем тысячам в зависимости от настроек хостинга и производительности сервера.

Дополнение снимает это ограничение, т.к. использует другой алгоритм обработки CSV-файла.
Файл с помощью AJAX-запросов обрабатывается последовательно "порциями", размер порции (количество строк) задается.
По умолчанию - сто строк.
При таком раскладе размер файла почти не имеет значения (ограничен величиной PHP_INT_MAX, которая обычно равна 2147483647 и ограничениями загрузки файлов на сервер).

20$

Прикрепленный файл  1.JPG   164.06К   13 Количество загрузок:
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)