在Magento中,我编写了许多小命令行脚本来执行诸如在许多产品上设置新属性之类的操作。我发现更新900个产品所需的时间大约需要6个小时才能完成。
加载单个产品所需的时间和我一样快,但是一旦我做出更改,保存的行为需要很长时间。
我正在附上我正在加载产品的方式,以防我能做些什么来更好地优化流程。非常感谢任何帮助。
$product = Mage::getModel('catalog/product')->load($magento_id);
$product->setMadeInUsa(1);
try {
$product->save();
} catch(Exception $e) {
echo "ERROR: " . $e->getMessage() . "\n";
}
代码运行没有错误,但它需要永远。
答案 0 :(得分:4)
Mage::getSingleton('catalog/product_action')
->updateAttributes(array($product->getId()), $attributesData, $storeId);
此代码仅更新您要更改的属性。第一个参数是产品ID数组,第二个是属性名称和值的数组,然后第三个是您要更新的商店ID。
这比保存整个模型要快得多。
答案 1 :(得分:0)
首先尝试将索引设置为手动,然后在更新完成后重新编制索引。这应该会提高性能。然而,如果您要经常进行导入,最终的解决方案是遵循您可以在更新属性批量操作中找到的代码构思,该方法针对一次性保存许多产品进行了优化。