Magento indexering uitvoeren op de commandline

Magento is een krachtig ecommerce platform, het werkt met een enorme hoeveelheid data. Hierbij kan de database overladen worden met 10 duizenden records en daarbij zwaar en traag worden. Om te voorkomen dat je webshop heel erg traag word gebruikt Magento hier indexen voor. Indexen zijn additionele database tabellen met “platte” data waarmee snel gewerkt kan worden. Eigenlijk zoals een boek een ToC (Table of Contents) heeft, heeft Magento een index voor elk deel van je webshop. Standaard update Magento deze indexen automatisch, wanneer je de cronjobs juist hebt ingesteld.

Echter kan het voorkomen dat je in sommige gevallen handmatig een index moet updaten, voor wanneer je bijvoorbeeld een grote product import hebt gedaan. Je kunt indexen updaten via de admin backend via: admin/system/index management. Soms is het zo dat deze pagina wit is, of heel traag is. Het updaten van een index kan ook heel lang duren, wanneer je bijvoorbeeld 10.000 producten of meer in je webwinkel hebt. Dan kan deze actie een aantal uur in beslag nemen. Uiteindelijk zal het PHP script afgebroken worden vanwege de instelling “max_execution_time”.

Er is een manier om deze problemen te voorkomen door het updaten van indexen via de commandline. Hiervoor heb je wel SSH toegang nodig naar je webserver. Magento heeft een aantal script die je via de commandline kunt uitvoeren. PHP scripts welke worden uitgevoerd via de CLI (Command Line Interface) hebben geen restrictie aan bijvoorbeeld de tijd die benodigd is om een update van een index uit te voeren. Hiermee bespaar je tijd en geld ! De scripts die gebruikt worden in dit artikel zijn te vinden in: [pad naar magento] /shell. Log in met je SSH gebruikersaccount en navigeer naar deze map (bijvoorbeeld: /var/www/mijndomein.nl/public_html/shell/).

Vervang hierbij het pad met het relevante pad op je eigen webserver. Deze kan bijvoorbeeld ook: ~/public_html/shell zijn. Bekijk welke bestanden er zich in deze map bevinden door dit commando uit te voeren:

Wanneer hier het bestand “indexer.php” in voor komt, kunnen we verder met de volgende stap. Laten we eens zien wat de status is van de indexen:

De output zal er ongeveer zo uit komen te zien:

Om de indexen te updaten voer je het volgende commando uit:

Hieronder bevind zich het complete overzicht van de type indexen die je kunt updaten. Je kunt de volgende argumenten gebruiken voor de verschillende type indexen:

De bovenstaande resultaten zijn op te vragen via:

Wil je bijvoorbeeld de voorraad status bijwerken, dan voer je onderstaand commando uit:

Je kunt ook meerdere indexen tegelijkertijd updaten door deze op te geven en te scheiden middels een komma:

Om ALLE indexen bij te werken voer je dit commando uit:

Mocht je dit proces willen uitvoeren in de “achtergrond”, handig voor wanneer je snel weer weg moet en toch even de index moet updaten. In deze gevallen kun je gebruik maken van de commandline tool “nohup”. nohup stelt je in staat om vrijwel elk CLI (Command Line Interface) programma in de “achtergrond” uit te voeren geheel onafhankelijk van je huidige (shell) sessie. Je commandline opdracht ziet er als volgt uit:

Na het uitvoeren van bovenstaand commando kun je zonder problemen op je webserver uitloggen. Het updaten van de indexen zal door blijven gaan. Wil je weten of het proces al klaar is, voer het onderstaande commando uit:

Wanneer je een melding als “Product Prices index was rebuilt successfully” ziet, dan is de actie juist uitgevoerd! Krijg je een lege regel, of helemaal niets dan zul je nog wat langer moeten wachten op terugkoppeling van de Magento indexer.

Heb jij handig commandline opdrachten of Magento tweaks? Laat het ons weten door gebruik te maken van het reactieformulier op deze pagina!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *