2

その権利を求めているかどうかわかりません。製品をロードし、いくつかの値を変更して保存する必要があります。私の質問は、どの方法が適切かということです.現在、私はその方法を使用しています:

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

1) 一般的には 40K 製品でも問題なく動作しますが、この方法はメモリ リークにつながると読みましたか? また、その解決策について、再インデックス機能を無効にすると、処理時間を改善できることを読みました。

2)別の方法を使用してコレクションとしてロードし、いくつかのフィルターを適用すると、元のaddFieldToFilter('sku',$the_product_i_want) 方が良いでしょうか?

私がより良いと言うとき、私は意味します:1)マジェントの方法、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 に答える