Modo migliore per scorrere raccolta del prodotto
-
22-10-2019 - |
Domanda
Quale di questi metodi è " più facile " sulla piattaforma Magento, in particolare la base di dati? Metodo 1 utilizza una singola chiamata al database per recuperare la raccolta, e quindi itera sul risultato. Metodo 2 recupera il prodotto all'interno del ciclo in ogni esecuzione.
Metodo 1
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*') // <- obv a bad idea
->addAttributeToFilter(
'sku', array('in' => $productSkus)
)
->load();
foreach ($products as $product) {
echo $product->getName();
}
Versus ottenere l'oggetto del prodotto all'interno del ciclo:
Metodo 2
$products = Mage::getModel('catalog/product');
foreach ($array as $key => value) {
$product = $products->load('PROD001', 'sku');
}
Ovviamente questo codice è solo un esempio. Considerando l'insieme di dati potrebbe contenere molte centinaia o migliaia di prodotti, quale sia il metodo " destro " via, o c'è un altro che mi manca?
Soluzione
Metodo 1 sta andando a prendere molto meno tempo per eseguire il ciclo, ma si consumano molta memoria.
Un'altra opzione che è probabilmente quello che si sta cercando è utilizzando il:
Mage::getSingleton('core/resource_iterator')
Questo descrive una sorta di: E 'possibile per iterare su collezioni di Magento con impaginazione in modo nativo?
Assicurati di prestare attenzione alla a batch Iterator da Kalen Jordan https://gist.github.com/kalenjordan/5483065
Questo può essere usato per realizzare grandi serie di dati molto elegante.