哪种方式更好地在 magento 中加载模型?

vba*_*bak 2 collections magento magento-1.7

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

$id = Mage::getModel('catalog/product')->getIdBySku($sku);
$product = Mage::getModel('catalog/product')->load($id);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Suk*_*ini 5

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

$model = Mage::getModel('catalog/product');
$id = $model->getIdBySku($sku);
$product = $model->load($id);
Run Code Online (Sandbox Code Playgroud)

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

$collection = Mage::getModel('catalog/product')->getCollection();
$product = $collection->addFieldToFilter('sku',$the_product_i_want);
Run Code Online (Sandbox Code Playgroud)

  • 准确地说,这不会像您在 C 中发现的那样导致经典的内存泄漏,但它会导致高内存使用率。 (7认同)