WordPres WooCommerce массовый XML импорт товаров с изображениями - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю плагин для пользовательского импорта файла 120 МБ XML с примерно 60 000 товаров в WooCommerce.

Как это работает У меня есть страница администратора с некоторыми настройками и полями и т. Д. c. -> Отправить сообщения самому себе - $_POST[...] определяется как установленный, и он присоединяет класс и запускает функцию.

  1. XMLReader - получает файл и начинает читать.

  2. Когда найден элемент 'Product' -> Я делаю DOMDocument и использую simplexml_import_dom.

  3. Проверка идентификаторов, имен и т. Д. c ...

  4. Отображение идентификатора продавца с существующей категорией (XML FILE) -> импортируются не все категории

  5. Проверка, если продукт существует: wc_get_product_id_by_sku

  6. Получение идентификатора категории по slugname: get_term_by('slug', $categorySlug, 'product_cat');

  7. Добавление продукта с помощью другой функции, использующей готовый productArray: WC_Product()

  8. загрузка изображений с помощью media_sideload_image также для получения их идентификаторов для WC_Product

  9. Сохранение продукта $newProductObj->save();

XMLReader пропустит продукт, если он существует или категория исключена из файла XML. XMLReader и скрипт работают быстро. Это замедляется из-за соединений с базой данных wc_get_product_id_by_sku и на 10 * * и $newProductObj->save(); WC_Product.

Самое большое замедление - с загрузкой изображений.

Попытка: Я установил php .ini, чтобы получить больше памяти et c. Я использовал set_time_limit (0); через некоторое время я отменяю неиспользуемые переменные. Код без вызовов БД - это быстрое чтение, создание объектов, проверка категорий ...

Проблемы:) Через некоторое время сервер переходит на 503 или 500 CGI PHP что-то

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

Надеюсь ты, Гас, можешь мне помочь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...