php – 如何修复Magento中与load()方法相关的内存泄漏?
我正在将数据(产品,客户和订单)从Magento商店导入另一个Magento商店.
例如,当我尝试导入产品时,我需要加载产品以检查它是否已存在并使用已加载产品的某些属性. 就像是: 问题是当我在循环中使用load()方法时,Magento不会停止增加内存使用量. foreach ($result['items'] as $item) { echo $index . ' - Memory: ' . memory_get_usage() . "n"; /** @var Mage_Catalog_Model_Product $product */ $product = Mage::getModel('catalog/product'); $product->load($product->getIdBySku($item['sku'])); $product->getOptionInstance()->unsetOptions()->clearInstance(); unset($product); gc_collect_cycles(); $index++; } > 1 – 记忆:28147376 在某些情况下,我需要导入数千种产品,这会导致内存溢出.正如您在上面的脚本中所看到的,我还尝试在foreach中运行一些优化函数,但这在性能上还不足以防止内存溢出. $product->getOptionInstance()->unsetOptions()->clearInstance(); unset($product); gc_collect_cycles(); 我找到了一种改变Magento核心的解决方案,但它是为Magento 1.4制作的,并不适用于我正在使用的Magento 1.9. https://ringsdorff.net/2009/07/23/guest-post-fix-for-memory-leaks-in-magento/ 有没有有效的解决方案来防止Magento 1.9中内存使用的增加? 解决方法
您可以使用Mage :: getSingleton()方法,它会将内存问题减少50%,并尝试以块的形式执行数据.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |