WooCommerce импортирует данные из файла JsonPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 WooCommerce импортирует данные из файла Json

Сообщение Anonymous »

Здравствуйте, у меня проблема с плагином, который я создал для импорта из json-файла в WooCommerce.
Он собирает данные и, если товара не существует, создает его с его характеристиками (помещая в черновик), в противном случае он только обновляет цену. Примерно до 100/150 товаров все работает идеально. В какой-то момент у меня возникли ошибки Memory_limit и max_excution_time. Пробовал увеличивать значения до 1Гб. Но в какой-то момент происходит сбой.
Код:

Код: Выделить всё

public function process_products(){

$file_exist = ABSPATH . '/data/import/data.json';
if (!file_exists($file_exist)) {
return;
};

$data = file_get_contents($file_exist);

$json_data = json_decode($data, true);

$articoli = $json_data["dsDati"]["TArticolo"];
$articoli_prezzi = $json_data["dsDati"]["TArticoloPrezzo"];

$post_author = wp_get_current_user()->ID;

$products = [];

foreach ($articoli as $key => $articolo) {

$products[$key]['title'] = $articolo["DescrizioneArticolo"];
$products[$key]['sku_prodotto'] = $articolo["IdArticolo"];
$products[$key]['aliquota'] = $articolo["AliquotaIva"];
$products[$key]['quatity_stock'] = str_replace(' ', '', $articolo["QtaDisp"]);

foreach ($articoli_prezzi as $key2 => $articolo_prezzo) {
if ($products[$key]['sku_prodotto'] != null && $articolo_prezzo["Nome"] == 'L1'  && $products[$key]['sku_prodotto'] == $articolo_prezzo["IdArticolo"]) {
$products[$key]['price'] =  str_replace(' ', '', $articolo_prezzo["Valore"]);
}
};

// cicliamo i prodotti da inserire
/**
* #  array(5) {
*    ["title"]=>
*    string(39) "ASTA TELESCOPICA DA 32 A 62 CON ZOCCOLO"
*    ["sku_prodotto"]=>
*    string(8) "00003590"
*    ["aliquota"]=>
*    string(2) "22"
*    ["quatity_stock"]=>
*    string(2) "50"
*    ["price"]=>
*    string(4) "8.00"
*  }
**/
foreach ($products as $key => $product) {

$product_id_exist = wc_get_product_id_by_sku($product["sku_prodotto"]);

// verifichiamo se il prodotto esiste

// prodotto esistente
if ($product_id_exist != 0) {
// inseriamo il prodotto
$product_to_update = new \WC_Product($product_id_exist);

// aggiorniamo prezzo
$product_to_update->set_regular_price($product["price"]);

//aggiorniamo quantita
$product_to_update->set_stock_quantity($product["quatity_stock"]);

$product_to_update->save();

continue;
} else {

// inseriamo il prodotto
$new_product = new \WC_Product;
$new_product->set_name($product["title"]);
$new_product->set_sku($product["sku_prodotto"]);
$new_product->set_status('draft');
$new_product->set_regular_price($product["price"]);
$new_product->set_manage_stock('yes');
$new_product->set_stock_quantity(absint($product["quatity_stock"]));
$new_product->save();

}
}

};

}
Я создал cron, который проверяет каждую ночь в полночь. Проблема в том, что товаров более 600. Есть ли способ решить проблему? Спасибо тем, у кого хватило терпения ответить

Подробнее здесь: https://stackoverflow.com/questions/693 ... -json-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»