Я создаю плагин для пользовательского импорта файла 120 МБ XML с примерно 60 000 товаров в WooCommerce.
Как это работает У меня есть страница администратора с некоторыми настройками и полями и т. Д. c. -> Отправить сообщения самому себе - $_POST[...]
определяется как установленный, и он присоединяет класс и запускает функцию.
XMLReader - получает файл и начинает читать.
Когда найден элемент 'Product' -> Я делаю DOMDocument
и использую simplexml_import_dom
.
Проверка идентификаторов, имен и т. Д. c ...
Отображение идентификатора продавца с существующей категорией (XML FILE) -> импортируются не все категории
Проверка, если продукт существует: wc_get_product_id_by_sku
Получение идентификатора категории по slugname: get_term_by('slug', $categorySlug, 'product_cat');
Добавление продукта с помощью другой функции, использующей готовый productArray: WC_Product()
загрузка изображений с помощью media_sideload_image
также для получения их идентификаторов для WC_Product
Сохранение продукта $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 что-то
Вопрос: Как я могу ускорить его, сделать его более надежным, чтобы он работал ... даже на полдня, но работал, не останавливая сервер.
Надеюсь ты, Гас, можешь мне помочь с этим.