Vanliga Coding Problem med Magento Platform av Deepa Ranganathan

Om du har utvecklat butiken efter butik på Magento, skulle du har märkt vissa kodning frågor. Förmodligen har du gått igenom några av dessa frågor själv efter märker ett dyk i utförandet av din butik. Som nämnts finns det flera kodnings frågor som påverkar resultatet för din butik. Men, dessa fem, som nämns här, är vanligtvis ansvariga för 84% av prestationsrelaterade frågor som påverkar din butik. Låt oss tala om hur de påverkar affären, och hur de kan optimeras Kodning i en Loop

Du kommer att inse att även de minsta fel som uppstår inom en slinga förstoras. I allmänhet, loopar är de största prestanda buggar, särskilt de som upprepar SQL-frågor eller redundanta beräkningar

Låt oss se hur ineffektivitet av överflödiga beräkningar och SQL-frågor inom en slinga kan påverka resultatet för din Magento butik Omdömen beräkningar inom en Loop Omdömen

Om du vill beräkna storleken på en array med en slinga, är det en funktion som du kan använda count () Review

för ($ i = 0; $ i < , räkna ($ rader), $ i ++) Review

{Omdömen

//lite kod Omdömen

}

Count (), individuellt utför och beräknar snabbt; det saktar ner när de används i en slinga. När du börjar att beräkna storleken på en matris med en massa data och använda räkna att leverera produktionen, hittar du prestandan långsammare oerhört. Orsaken är PHP inte erbjuda loop-invariant kod rörelse automatiskt. Omdömen

Det bästa sättet att undvika detta prestandaproblem är att anropa funktionen utanför slingan Omdömen

$ rowNum = räkna ($ rader);

för ($ i = 0; $ i

​​{Omdömen

//lite kod Omdömen

} SQL-frågor inom en Loop


Eftersom det beräknar en SQL-fråga kan leda till prestationsbaserade frågor,. när du kör den i en slinga, finns det en möjlighet att bromsa din webbplats Oftast kommer du att se att Magento modeller laddas i slingor

foreach ($ this- > getProductIds () som $ ProductID) Review

{$ produkt = Mage::getModel('catalog/product')->load($productId);

$this->processProduct($product);

}

An uppsättning av produkt ID lastas för att bearbeta modellen. Som kan ses EAV används för att genomföra denna slinga som kan kräva att du kan köra flera frågor. I detta fall, det antal frågor som håller på att exekveras kommer att multipliceras med antalet produkter, och resultatet är en långsam butik som ger ut dåliga resultat. Omdömen

Använd Magento uppgifter Det bästa sättet att optimera skulle vara att undvika att ladda produkterna i en slinga. Så, vad kan du göra? . samling som laddar en uppsättning produkter lätt Nedan följer ett exempel på hur datainsamlings modeller samla produkter genom att skapa en rad olika produkt Ids och fortsätta att lägga de begärda produkterna till sina områden

$ collection = Mage: : getResourceModel (katalog /product_collection) Omdömen

-getProductIds ())) Review

-

foreach ($ samling som $ produkt) Review

{

$ this- Omdömen

} Omdömen När du flyttar ut ur öglorna och i modellen insamlingsmetod, kommer du att se att resultatet av butiken verkligen har förbättrats. Kom alltid ihåg att hålla koll på minnet, så att när du använder datainsamlings modeller, behöver du inte läsa in data som är tyngre jämfört med minnesstorleken. Du måste utföra mass spara och radering av de frågor inom modellerna för att bibehålla dess prestanda din butik. Laddar modeller

Hela processen att ladda en modell i din butik är inte riktigt cachad, varför varje gång du anropar load () funktion, är vissa frågor körs i databasen, vilket leder till prestandaproblem i din butik Omdömen

$ name = Mage :: getModel (katalog /produkten) -

$ sku = Mage :: getModel (katalog /produkt) -

$ attr = Mage :: getModel (katalog /produkt) -

Detta är ett klassiskt exempel på hur frågorna drivs i databasen varje gång en viss modell kallas Omdömen

Det bästa sättet att ta itu med denna fråga är att se till att varje modell är laddad bara en gång

$ produkt = Mage :: getModel (katalog /produkt) -

$ name = $ produkt- Omdömen

$ sku = $ produkt- Omdömen

$ attr = $ produkt-

Ibland, du bara sysslar med produkt Id. Vid en sådan tid, gör det inte meningsfullt att läsa hela modellen. Med den här koden kan du enkelt ladda produkten Id för en viss produkt Omdömen

$ produkt = Mage :: getModel (katalog /produkt) -

$ res ['id'] = $ produkt-

En annan populär metod för att härleda produkt-ID är att använda naturlig produkt metoden getIdBySku () Review

$ res ['id'] = Mage :: getModel (katalog /produkten) - Coding Samlingar

annat område i Magento kodning som erbjuder problem är samlingar. Samlingar är ganska effektiv, men som de arbetar med en enorm datamängd, måste du se till att du koda dem med omsorg, annars kommer du att möta prestandaproblem Omdömen

Låt oss se hur samlingarna kan orsaka kodnings frågor

Ringa Redundant datamängder

Du använder vanligen samlingar för att hämta en enda punkt i synnerhet den första punkten på slingan första iteration. Så, vad kan vara ett problem här? När du inte erbjuder en begränsning på resultaten, kommer slingan att hålla iteration och ge ut alla objekt inom samlingen i resultatet, i stället för den ursprungliga första objektet. Följande är ett exempel på hur samlingarna kan ge ut alla objekt Omdömen

public function getRandomItem () Review

{Omdömen

$ collection = Mage :: getResourceModel (mymodule /my_collection ') - > setRandomOrder ();

retur $ samling-> getFirstItem ();

} Omdömen

Ansökan begränsningen Omdömen

public function getRandomItem () Review

{Omdömen

$ collection = Mage :: getResourceModel (mymodule /my_collection ') katalog

- Omdömen

tillbaka $ Collection- Omdömen

}

Funktionerna $ Collection- > setPageSize () och $ Collection- > setCurPage () erbjudande begränsa antalet artiklar som hämtas från samlingen Omdömen Du kan även ändra $ Collection- Omdömen

Omdömen

Författare Bio:

Deepa, en teknisk skribent med Semaphore Software, som nu ägnar sin tid i rådgivning sina kunder att anställa Magento utvecklare. Hon erbjuder information samt tips och senaste trenderna på detta område. Hennes kärlek för läsning hjälper henne kontinuerligt lämna senaste informationen om olika tekniska och design aspekter av Magento