Dietro un negozio WooCommerce che sembra fermo, in attesa del prossimo cliente, c’è in realtà molto lavoro in sottofondo: ordini non pagati da annullare, email da spedire, sessioni scadute da cancellare, scorte da sincronizzare, abbonamenti da rinnovare, statistiche da aggiornare. Tutto questo passa da due meccanismi poco conosciuti: il cron di WordPress e le azioni pianificate di WooCommerce. Quando funzionano non te ne accorgi; quando si inceppano, i problemi sembrano non avere niente a che fare con loro.
Il cron di WordPress
WordPress ha un proprio sistema per eseguire operazioni a orari stabiliti, chiamato WP-Cron. Ha una particolarità: non è un vero orologio. Le operazioni in scadenza vengono controllate quando qualcuno visita il sito, e a quel punto WordPress lancia una richiesta verso se stesso per eseguirle.
Questo ha due conseguenze:
- se il sito ha poche visite, le operazioni partono in ritardo;
- se il sito ha molte visite, i controlli sono continui, e ogni esecuzione carica tutto WordPress, WooCommerce e i plugin.
Inoltre, se la pagina servita al visitatore viene dalla cache, quella visita non fa partire il cron: su un sito molto ben servito dalla cache le operazioni possono rimanere indietro.
Le azioni pianificate di WooCommerce
WooCommerce usa un sistema in più, l’Action Scheduler, pensato per gestire code di lavori anche molto lunghe. Lo usano WooCommerce stesso e molte estensioni: abbonamenti, email marketing, sincronizzazioni con gestionali e marketplace, feed prodotto, statistiche. Le azioni vengono messe in coda ed eseguite a gruppi, a partire proprio dal cron di WordPress.
Le trovi in WooCommerce > Stato > Azioni pianificate. Ogni azione ha uno stato:
| Stato | Significato |
|---|---|
| In attesa | in coda, da eseguire |
| In corso | in esecuzione in questo momento |
| Completata | eseguita correttamente |
| Non riuscita | eseguita con errore |
| Annullata | tolta dalla coda prima dell’esecuzione |
I segnali che qualcosa non va
- molte azioni «In attesa» con data passata, anche di giorni: la coda non viene smaltita;
- molte azioni «Non riuscita» dello stesso tipo: un plugin ha un errore che si ripete;
- migliaia di azioni completate che si accumulano: occupano spazio nel database e rallentano le query sulla coda;
- nel negozio: ordini non pagati che non si annullano, scorte che non tornano disponibili, email automatiche in ritardo, rinnovi degli abbonamenti che non partono, statistiche ferme.
Cosa fare se la coda è bloccata
- guarda le azioni non riuscite: aprendole vedi il registro con il messaggio d’errore e il nome dell’azione, che spesso dice quale plugin l’ha creata;
- controlla i registri in WooCommerce > Stato > Registri;
- aggiorna o correggi il plugin responsabile; se è un plugin che non usi più, disattivalo e poi rimuovi le sue azioni in sospeso;
- verifica che il cron giri: se il sito è quasi tutto servito dalla cache o se hai disattivato WP-Cron senza sostituirlo, le azioni non partono.
Un cron vero al posto di WP-Cron
Per un negozio con traffico regolare, la soluzione più ordinata è far eseguire il cron di WordPress da un’operazione pianificata del server, a intervalli regolari, invece di affidarsi alle visite. Si fa in due passi:
- in
wp-config.phpaggiungi, prima della riga che chiude le impostazioni,define('DISABLE_WP_CRON', true);; - programma l’esecuzione periodica di
wp-cron.phpcon un cron del server.
Il secondo passo è fondamentale: se disattivi WP-Cron senza sostituirlo, le operazioni smettono del tutto di partire. Se non sai come impostarlo sul tuo account, apri un ticket: ti diciamo come fare, o lo configuriamo noi.
Un caso reale: ci è capitato un negozio con un tema e un page builder piuttosto pesanti, che riceveva avvisi di consumo di memoria a intervalli irregolari. Il sito funzionava, ma ogni volta che WP-Cron si attivava, il negozio chiamava se stesso e ricaricava tutto il suo stack: centinaia di volte al giorno, spesso sovrapponendosi ai bot che provavano l’accesso. Sostituire WP-Cron con un cron di sistema a intervalli regolari ha tolto quei picchi.
Le operazioni pesanti nel momento giusto
Molti plugin permettono di scegliere quando eseguire i lavori più pesanti: importazioni di catalogo, generazione dei feed, sincronizzazione delle scorte, pulizia del database. Spostali nelle ore con meno visite ed evita che due lavori pesanti partano insieme.
Attenzione anche al back office: alcune pagine di report si aggiornano da sole a intervalli regolari. Lasciate aperte per ore in una scheda del browser, possono rilanciare continuamente query pesanti e rallentare tutto il negozio. Chiudile quando hai finito.
Pulizia della coda
WooCommerce cancella da solo le azioni completate più vecchie, ma se la coda è stata bloccata a lungo o un plugin ha generato moltissime azioni, la tabella può diventare enorme. Prima di qualsiasi pulizia manuale fai un backup del database. Per capire quali tabelle e query pesano di più usa Database Intelligence.
In sintesi
- controlla ogni tanto WooCommerce > Stato > Azioni pianificate, soprattutto le azioni non riuscite e quelle in attesa da tempo;
- per un negozio con traffico regolare, sostituisci WP-Cron con un cron di sistema;
- programma importazioni e sincronizzazioni nelle ore tranquille;
- non lasciare aperti report pesanti nel back office;
- se hai dubbi, apri un ticket dall’area clienti: guardiamo insieme cosa gira in sottofondo nel tuo negozio.