我需要遍历特定类别中的所有产品,更改自定义属性,然后保存每个产品。
目前我有:
$_category = Mage::getModel('catalog/category')->load($_POST['id']);
$all_products = $_category->getProductCollection();
foreach ($all_products as $product) {
$product = Mage::getModel('catalog/product')->load($product->getId());
$product->setCustomAttribute(xxxx);
$product->save();
}
这是最佳做法,是否可以改善性能?这些系列平均每个产品大约有15-20个产品,我的加载时间非常慢,甚至是脚本超时。
我已经使用set_time_limit(0);
尝试强制通过,但我想我可以改进我的代码以阻止我这样做?最终,这些系列可能拥有超过100-200种产品,因此现在需要找到一个好的性能
答案 0 :(得分:1)
如果您正在对相同属性和相同值进行大量更新,请考虑尝试updateAttributes
:
// Iterate over the foreach and get all the product ids into an array
// $attr = array("attribute_code" => "attribute_value");
Mage::getSingleton("catalog/product_action")->updateAttributes($productIds, $attr, $storeId);
应该快得多。