2010-09-08 81 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

嘗試先將索引設置爲手動,然後在更新完成後重新索引。這應該會改善性能。然而,如果您要經常進行導入,最終的解決方案是遵循您可以在更新屬性批量操作中找到的代碼想法,該操作已針對一次保存許多產品進行了優化。

相關問題