In uno degli e-commerce che abbiamo realizzato di recente abbiamo avuto la necessità di ottimizzare il processo di importazione dei prodotti dal gestionale.
L’e-commerce in questione è basato su WordPress + WooCommerce, la procedura di importazione dei prodotti dal gestionale è stata sviluppata custom interamente da noi sotto forma di plugin, in quanto il gestionale non offriva plugin già pronti per integrarsi con piattaforme esterne.
In queste situazioni poi, è meglio evitare di appoggiarsi a plugin di importazione massiva generici: magari ti permettono di arrivare al 80% del lavoro in poco tempo, ma poi risoluta difficile andare a modificare delle logiche specifiche, nel caso in cui, ad esempio, sia necessario ottimizzare la procedura stessa (che è l’oggetto di questo articolo).
Tornando a noi, al posto di fare ipotesi e andare a tentoni ad ottimizzare parti a caso del codice, abbiamo colto l’occasione per esplorare il profiler presente in Xdebug, che fino ad oggi abbiamo usato solo per, beh, mettere breakpoint nel codice.
Che dire? Dopo un po’ di configurazione…funziona! Abbiamo configurato il tutto in una Docker image, così da poter essere riutilizzato in tempo zero (più o meno) in qualsiasi altro progetto.
L’output del profiler è molto….RICCO, è quindi necessario dedicare un po’ di tempo a decifrare l’output stesso, ma alla fine siamo riusciti a individuare gli effettivi bottleneck presenti nel codice, ed abbiamo modificato a colpo sicuro solo le parti di codice che necessitavano effettivamente di una ottimizzazione.
Prendere delle decisioni basate su dati oggettivi (e non su delle ipotesi) significa ridurre il rischio (fattore che molto spesso ignoriamo, ma è un aspetto fondamentale!), significa scrivere codice migliore, significa rispettare budget e date di rilascio.
Avete mai usato un profiler nel vostro lavoro di tutti i giorni?