2

我不知道我问的是否正确。我需要加载一个产品,更改一些值并保存它。我的问题是哪种方式适合这样做。目前我正在使用这种方式:

$id = Mage::getModel('catalog/product')->getIdBySku($sku);
$product = Mage::getModel('catalog/product')->load($id);

1) 一般来说,即使使用 40K 产品,它也能正常工作。但我读到这种方式会导致内存泄漏?同样对于那个解决方案,我读到如果我禁用重新索引功能,我可以缩短处理时间。

2)如果我使用另一种方式并将其作为集合加载,然后应用一些过滤器,exaddFieldToFilter('sku',$the_product_i_want) 会更好吗?

当我说得更好时,我的意思是:1)magento方式,2)时间效率3)不做我不需要做的事情。

4

1 回答 1

5

每次调用以下代码片段时,Mage::getModel('catalog/product')Magento 都会在内存中创建一个新的模型对象。这将导致内存浪费。您可以执行以下操作。

$model = Mage::getModel('catalog/product');
$id = $model->getIdBySku($sku);
$product = $model->load($id);

同时if you have the product object可以使用下面的代码。

$collection = Mage::getModel('catalog/product')->getCollection();
$product = $collection->addFieldToFilter('sku',$the_product_i_want);
于 2013-11-04T03:08:53.353 回答