gpt4 book ai didi

magento - 在产品集合上使用 Magento 的资源迭代器模型

转载 作者:行者123 更新时间:2023-12-04 06:14:39 24 4
gpt4 key购买 nike

我最近发现了以下关于在调用大型产品集合时使用 Magento 的资源迭代器模型以节省资源的文章 - http://www.fontis.com.au/blog/magento/loading-large-collections .但是,我发现很难弄清楚如何让它输出完全相同的数据。

因此,假设我正在使用以下内容获取完整的产品集合并输出 sku:

$productCollection = Mage::getModel('catalog/product')->getCollection();
foreach($productCollection as $product){
echo $product->getSku().',';
}

使用分析器,我看到这是使用 1,154,480 字节来处理的。

现在像这样使用资源迭代器模型:
function productCallback($args)
{
$product = Mage::getModel('catalog/product');
$product->setData($args['row']);
echo $product->getSku().',';
}
$_productCollection = Mage::getModel('catalog/product')->getCollection();;
$_productCollection = Mage::getSingleton('core/resource_iterator')->walk($_productCollection->getSelect(), array('productCallback'));

这使用 199,912 个字节。所以获得相同的东西有很大的不同,只是一个基本的sku列表。

但是我的问题是,例如,如果我想制作一个样式精美的产品列表,并获取它们的图像、网址等,我之前会在 $productCollection 上使用 foreach 循环,如第一个示例所示:
foreach($_productCollection as $product){
echo $product->getSku().',';
};

但这不再有效。看起来当它通过回调时,它的作用与 foreach 循环相同,依次运行每个产品。

那么,如何以与以前相同的格式恢复我的集合,以便它再次在 foreach 循环中工作?我需要将产品添加到数组中吗?如果是这样,我该怎么做?

最佳答案

我想你可能错过了重点。当您不需要完整的面向对象方法或记录数组并且可以使用数据库中的原始值时,资源迭代器非常好。

为了输出图像和价格之类的东西,您需要具有计算图像缩略图功能的产品对象实例,或者折扣如何影响价格。此外,当产品对象加载时,它会触发各种事件,以便其他模块也可以进行修改,这也是 Magento 如此可扩展的部分原因。如果您担心内存使用或执行时间,那么 cache the product list block并且不要更改任何其他内容。

关于magento - 在产品集合上使用 Magento 的资源迭代器模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com