Hai cambiato un prezzo e il catalogo mostra ancora quello vecchio. Hai creato un prodotto e non compare nella categoria. Le email degli ordini partono in ritardo, o non partono. In Magento questi sintomi, che sembrano scollegati, hanno spesso la stessa origine: indici e attività pianificate. Vediamo come funzionano, senza tecnicismi inutili, e come controllare che lavorino.

Cosa sono gli indici

Magento conserva i dati dei prodotti in una struttura molto flessibile: attributi, negozi, lingue, prezzi per gruppo di clienti, regole di catalogo. È potente, ma leggere un prodotto ricomponendo tutti questi pezzi a ogni visita sarebbe lentissimo.

Per questo Magento prepara in anticipo delle tabelle «riassuntive», gli indici: quali prodotti stanno in quale categoria, quale prezzo vale per chi, cosa è disponibile, cosa trova la ricerca. Il catalogo che vedono i clienti viene letto dagli indici, non dai dati originali. Se un indice non viene aggiornato, il negozio mostra informazioni vecchie anche se nel back office è tutto giusto.

Le due modalità: al salvataggio o pianificata

Ogni indice può aggiornarsi in due modi:

Modalità Come funziona Quando va bene
Al salvataggio l’indice si aggiorna subito, ogni volta che salvi qualcosa cataloghi piccoli, poche modifiche
Pianificata Magento annota cosa è cambiato e aggiorna gli indici in seguito, a piccoli gruppi, tramite le attività pianificate la scelta consigliata per un negozio in produzione

Con la modalità al salvataggio, su un catalogo grande ogni modifica nel back office diventa lenta, e un’importazione di massa può bloccare tutto. Con la modalità pianificata il back office resta reattivo e gli aggiornamenti arrivano sul catalogo poco dopo. C’è però una condizione: le attività pianificate devono girare.

Lo stato e la modalità degli indici si controllano da riga di comando:

bin/magento indexer:status

bin/magento indexer:show-mode

e per impostare la modalità pianificata su tutti gli indici:

bin/magento indexer:set-mode schedule

Cos’è il cron di Magento

Il cron è il meccanismo che esegue comandi a intervalli regolari. Magento lo usa per moltissime cose:

  • aggiornare gli indici in modalità pianificata;
  • inviare le email che mette in coda;
  • applicare le regole di prezzo del catalogo alle date previste;
  • pubblicare contenuti programmati, generare la sitemap, pulire dati vecchi;
  • elaborare le code di messaggi usate da varie funzioni e da molte estensioni.

Magento non ha bisogno di un processo che resti sempre acceso: basta che il sistema lanci il suo comando ogni minuto. Ci pensa poi Magento a decidere quali lavori eseguire, in base al proprio calendario interno.

Come si attiva

La documentazione ufficiale descrive il comando che Magento usa per installare da sé le proprie righe di cron per l’utente del negozio. Sui nostri piani puoi anche gestire le attività pianificate dal pannello DirectAdmin, nella sezione dedicata. In ogni caso conta che:

  • il comando venga eseguito ogni minuto;
  • giri con lo stesso utente del negozio;
  • usi la stessa versione di PHP del sito: se la riga di comando usa una versione diversa, il cron può fallire in silenzio.

Per il lavoro da riga di comando serve l’accesso SSH, che da noi è disponibile sulla porta 7530 con una chiave aggiunta dal pannello. Se non sei sicuro che sia configurato bene, apri un ticket: lo verifichiamo con te.

Come capire se il cron funziona

Ecco i segnali più affidabili:

  • Gli indici: se indexer:status mostra a lungo indici da ricostruire o con molte modifiche in attesa, il cron probabilmente non lavora.
  • Il back office: Magento mostra un avviso quando qualche indice non è valido. Non ignorarlo.
  • Le email: se l’invio asincrono è attivo e le conferme d’ordine non partono, controlla prima il cron.
  • Le regole di prezzo: una promozione programmata che non parte all’ora prevista è un altro indizio.

Gli errori più comuni

Cron configurato, ma con la versione sbagliata di PHP

È il caso più frequente dopo un cambio di versione: il sito va con la versione nuova, il cron continua a usare la vecchia, oppure il contrario. Dopo ogni cambio di versione di PHP, ricontrolla il cron.

Reindicizzazioni complete a ripetizione

Ricostruire tutti gli indici da capo (bin/magento indexer:reindex) è un’operazione pesante: va bene dopo un’importazione importante o una migrazione, non come abitudine quotidiana. Se ti accorgi di doverlo fare spesso, il problema è il cron, non gli indici.

Estensioni che appesantiscono il cron

Alcune estensioni aggiungono lavori pianificati molto pesanti (feed per marketplace, sincronizzazioni con gestionali). Se il negozio rallenta sempre agli stessi minuti, il motivo potrebbe essere lì: valuta con lo sviluppatore dell’estensione orari e frequenza.

Cron fermo dopo una migrazione

Le righe di cron fanno parte della configurazione del server, non dei file del negozio: dopo un trasloco vanno ricreate. Quando curiamo noi la migrazione, è uno dei controlli che facciamo prima di spostare i DNS.

In breve

  • il catalogo legge dagli indici: indici vecchi significano negozio vecchio;
  • in produzione, indici in modalità pianificata;
  • il cron deve girare ogni minuto, con lo stesso utente e la stessa versione di PHP del sito;
  • bin/magento indexer:status è il primo controllo da fare quando qualcosa «non si aggiorna».

Per una panoramica su tutto ciò che serve a un Magento in salute, dalla modalità produzione a Redis, dai un’occhiata alla pagina dell’hosting Magento o apri un ticket dall’area clienti.

Altri articoli su E-commerce

Parliamone

Un hosting che ti spiega le cose, e poi le fa

Questi articoli nascono dalle domande dei nostri clienti. Se vuoi un hosting dove dietro ogni risposta c’è un tecnico vero, parliamone.

  • 4,9 su 5 su Trustpilot264 recensioni, il 96% a cinque stelle
  • Risponde un tecnicoIn italiano, da chi gestisce i server
  • Il trasloco lo facciamo noiSito, database e posta, controllati prima di spostare i DNS