Показать сообщение отдельно
  #5 (permalink)  
Старый 05.02.2020, 21:17
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Думаю как организовать импорт товаров компании из YML файла. Объем большой, более 35 000 товаров.

Есть кнопка "Начать импорт" и поле для ссылки на файл.

После нажатия кнопки PHP забирает cURL- ом файл, разбирает и начинает грузить в базу строки, в директорию фото. Всё гуд, но сервак прерывал соединение. Я увеличил время в NGINX до пол часа на соединение, но оказалось что и пол часа мало, успело импортироваться 7500 товаров.

Вот и думаю теперь такой вариант: YML разбирается, превращается в массив, сжимаем его, превращаем в строку и записываем в .txt файл на первом этапе, когда пользователь нажимает на "Загрузить файл". В этом случае ему выходит ответ: "Файл загружен на сервер и готов к импорту. Товаров - n." и ниже кнопка "Начать импорт". Вот тут и думаю сделать функцию в JS, которая даст по нажатию на кнопку запуск другой функции, которая запустит импорт на PHP. PHP вытащит из текстового файла строку, разожмёт и превратит обратно в массив. Пройдет по массиву, например 1000 раз, импортирует, а затем удалит из массива импортированный товар, посчитает сколько осталось товаров после импорта 1000 и вернет ответ в нашу функцию JS. Функция посмотрит сколько товаров осталось и решит, запустить ли еще раз импорт. Если > 0 , то снова вызовет функцию, которая стартанет PHP еще раз и т.д.

Т.е. нужно организовать импорт любого количества товаров частями, не грузя сервер без остановки.

Блин, может бредово написал, но уже не знаю как извернуться.
Ответить с цитированием