2010-09-08 44 views
3

在Magento中,我编写了许多小命令行脚本来执行诸如在多个产品上设置新属性的操作。我发现更新900个产品所需的时间大约需要6个小时才能完成。在Magento中保存时间非常长

加载单个产品所花费的时间与我除外的时间一样快,但一旦完成更改,存储行为需要很长时间。

我附上了我如何加载产品,以防我可以做些什么来更好地优化流程。任何帮助在这里将不胜感激。

$product = Mage::getModel('catalog/product')->load($magento_id); 
$product->setMadeInUsa(1); 
try { 
    $product->save(); 
} catch(Exception $e) { 
    echo "ERROR: " . $e->getMessage() . "\n"; 
} 

该代码无误地运行,但它需要永远。

回答

4
Mage::getSingleton('catalog/product_action') 
      ->updateAttributes(array($product->getId()), $attributesData, $storeId); 

此代码只会更新您想要更改的属性。第一个参数是产品ID的数组,第二个参数是属性名称和值的数组,第三个是您希望更新的商店ID。

这比保存整个模型要快得多。

0

尝试先将索引设置为手动,然后在更新完成后重新索引。这应该会改善性能。然而,如果您要经常进行导入,最终的解决方案是遵循您可以在更新属性批量操作中找到的代码想法,该操作已针对一次保存许多产品进行了优化。

相关问题