Salta ai contenuti

Cron e elaborazione in background

PrimoCRM esegue tutto il lavoro pesante in background: l’invio delle campagne, i rilasci scaglionati delle sequenze e i passaggi delle automazioni vengono elaborati da processi pianificati, mai durante la richiesta della pagina. Questi processi vengono eseguiti tramite il cron di WordPress, quindi un cron affidabile è ciò che garantisce che le tue email partano in orario. Questa pagina spiega come funziona e come renderlo solido.

PrimoCRM registra due pianificazioni personalizzate e un piccolo set di processi in background:

Processo Esecuzione Attività
Invio email campagna Su richiesta (solo mentre una campagna ha email in sospeso) Invia una campagna in batch limitati
Elaborazione sequenza Ogni minuto Invia le email della sequenza dovute
Elaborazione automazione Ogni minuto Fà avanzare i contatti attraverso i passaggi dell’automazione
Controllo integrità della coda Ogni 5 minuti Recupera le email bloccate e riattiva le campagne in stallo

Ciascun processo richiede un lotto di lavoro, rispetta un limite di tempo per non superare mai i limiti del tuo host e si ripianifica automaticamente. Il controllo di integrità di 5 minuti è una rete di sicurezza: se un invio si blocca, lo spinge a ripartire al successivo ciclo.

WordPress include un pseudo-cron che si attiva solo quando qualcuno visita il sito. Su un sito con molto traffico questo va bene. Su un sito a basso traffico, possono passare ore senza visite, quindi gli invii pianificati non vengono eseguiti fino all’arrivo del prossimo visitatore. Il sintomo è una campagna che rimane sullo stato “in invio” e procede lentamente o per nulla.

La soluzione consiste nel sostituire lo pseudo-cron attivato dai visitatori con un cron reale che si avvia a intervalli fissi, idealmente ogni minuto.

  • Apri PrimoCRM, quindi Impostazioni e cerca lo stato del sistema o del cron, che indica se i processi sono pianificati e quando sono stati eseguiti l’ultima volta.
  • In alternativa, installa un plugin di supporto come WP Crontrol e verifica che gli eventi primocrm_process_sequences, primocrm_process_automations e primocrm_queue_health_check siano presenti e attivi.

Se una campagna è bloccata e il tuo sito riceve poco traffico, il cron è quasi sempre la causa.

Due passaggi: disattiva lo pseudo-cron di WordPress, quindi aggiungi un cron reale che venga eseguito ogni minuto.

Aggiungi questo codice a wp-config.php, sopra la riga “Fatto, interrompi le modifiche”:

define( 'DISABLE_WP_CRON', true );

Questo impedisce a WordPress di attivare il cron durante il caricamento delle pagine, rendendo il tuo cron reale l’unico attivatore.

Scegli l’opzione adatta al tuo hosting.

WP-CLI (la migliore, se disponi di accesso SSH):

* * * * * cd /path/to/wordpress && wp cron event run --due-now >/dev/null 2>&1

Binario PHP (ottimo anch’esso con accesso SSH):

* * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1

cPanel: apri Cron Jobs (Operazioni Cron), imposta la pianificazione su ogni minuto (* * * * *) e utilizza uno dei comandi precedenti con il percorso completo del tuo sito.

Nessun accesso SSH (hosting condiviso)? Utilizza un servizio di cron remoto gratuito come cron-job.org per richiamare il tuo URL cron tramite HTTP ogni minuto:

https://yoursite.com/wp-cron.php?doing_wp_cron

Registrati sul servizio, aggiungi quell’URL, imposta l’intervallo a 1 minuto e salva. Questo richiamerà il cron di WordPress dall’esterno a intervalli fissi.

  • Una campagna è bloccata su “in invio”. Quasi sempre colpa del cron. Verifica che un cron reale sia in esecuzione ogni minuto e che DISABLE_WP_CRON sia impostato. Il controllo di integrità di 5 minuti riprenderà l’invio non appena il cron si avvierà.
  • Le automazioni o le sequenze vengono eseguite in ritardo. L’intervallo del tuo cron è troppo lungo o lo pseudo-cron è in attesa di visitatori. Passa a un cron reale di 1 minuto.
  • Non viene inviato nulla. Indipendentemente dal cron, verifica che il tuo metodo di invio sia configurato e che un’email di test arrivi correttamente. Il cron controlla quando il lavoro viene eseguito; il mailer controlla se viene recapitato.
  • Limiti di CPU dell’hosting condiviso. I processi hanno un limite di tempo e rallentano sotto carico, quindi sono sicuri sugli hosting condivisi. Se il tuo host continua a lamentarsi, un intervallo leggermente più lungo (da 2 a 5 minuti) riduce la frequenza a scapito della tempestività.

Vedi anche Requisiti per i prerequisiti di PHP e del server, e Invio e recapito per quanto riguarda il sistema di posta.