/ / Aktualizacja rekordów kolekcji szybciej - php, magento, magento-1.9

Szybsze aktualizowanie rekordów kolekcji - php, magento, magento-1.9

Mam kolekcję rekordów, które muszęzaktualizuj zapasy. Słyszałem, że używanie "load" na Magento powoduje, że jest wolniejszy, a ponieważ używam go przed aktualizacją mojego magazynu, zastanawiam się, czy istnieje szybszy sposób, ponieważ mam tysiące produktów.

Oto przykład kodu:

$productCollection = Mage::getResourceModel("catalog/product_collection")
->addFieldToFilter(array(
array("attribute"=>"reference","neq"=>""),
));
//Update Prices and Stock
foreach ($productCollection as $product) {
try {
$reference = $product->getReference();
$res = $products_api->xpath("item/sku[.="{$reference}"]/parent::*");

if (count($res) <= 0){
unset($product);
unset($res);
unset($reference);
continue;
}

$product->load($product->getId());
//Search for Stock
$stock = $res[0]->stocks->quantity;
//Update Stock
$product->setStockData(array(
"use_config_manage_stock" => 0,
"manage_stock"            => 1,
"is_in_stock"             => $stock > 0 ? 1 : 0,
"qty"                     => $stock,
));

$product->save();

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz spróbować załadować element magazynowy zamiast ładowania produktu. Proszę, spróbuj użyć poniższego kodu:

$productCollection = Mage::getResourceModel("catalog/product_collection")
->addFieldToFilter(array(
array("attribute"=>"reference","neq"=>""),
));
//Update Prices and Stock
foreach ($productCollection as $product) {
try {
$reference = $product->getReference();
$res = $products_api->xpath("item/sku[.="{$reference}"]/parent::*");

if (count($res) <= 0){
unset($product);
unset($res);
unset($reference);
continue;
}


//Search for Stock
$stock = $res[0]->stocks->quantity;
//Update Stock

$stockItem = Mage::getModel("cataloginventory/stock_item")->loadByProduct($product);
if ($stockItem->getId()) {
$isInStock = $stock > 0 ? 1 : 0;
$stockItem->setQty($stock);
$stockItem->setIsInStock($isInStock);
$stockItem->setManageStock(1);
$stockItem->setUseConfigManageStock(0);
$stockItem->save();
}

Zaczerpnięte z bloga Sonassi - Aktualizacje zapasów w Magento - FAST