解決magento儲存產品時耗時很長的問題
阿新 • • 發佈:2018-11-07
以前我在更新產品屬性值(拿price為例)的時候,通常會這樣做:
因為之前網站產品很少,也就幾百個,foreach下來,不會感覺這段code很慢,後來產品逐漸增多,每次走到這裡,動輒就會消耗幾個小時;echo了一下save,每個產品約耗費5秒,如果有1萬件產品,foreach完成就是14個小時,mysql都幾乎就要gone 掉了;
上網search了一下發現magento有一個直接更新Attribute的function,改code之後為
foreach($product_ids as $id){
$product = Mage::getModel('catalog/product')->load($id);
$product->setPrice($price)->save();
}
因為之前網站產品很少,也就幾百個,foreach下來,不會感覺這段code很慢,後來產品逐漸增多,每次走到這裡,動輒就會消耗幾個小時;echo了一下save,每個產品約耗費5秒,如果有1萬件產品,foreach完成就是14個小時,mysql都幾乎就要gone 掉了;
上網search了一下發現magento有一個直接更新Attribute的function,改code之後為
$store_id = Mage::app()->getStore('default')->getId(); foreach($product_ids as $id){ Mage::getSingleton('catalog/product_action')->updateAttributes(array($id), array('price'=>$price), $store_id); }
這段code要比前面的節省5倍左右的時間,很好的解決了我的需求。
本文連結http://blog.csdn.net/shangxiaoxue/article/details/10605579