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.
Come PrimoCRM utilizza il cron
Sezione intitolata “Come PrimoCRM utilizza il cron”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.
Perché un cron affidabile è importante
Sezione intitolata “Perché un cron affidabile è importante”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.
Verifica se il cron è in funzione
Sezione intitolata “Verifica se il cron è in funzione”- 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_automationseprimocrm_queue_health_checksiano presenti e attivi.
Se una campagna è bloccata e il tuo sito riceve poco traffico, il cron è quasi sempre la causa.
Configura un cron reale (consigliato)
Sezione intitolata “Configura un cron reale (consigliato)”Due passaggi: disattiva lo pseudo-cron di WordPress, quindi aggiungi un cron reale che venga eseguito ogni minuto.
1. Disattiva lo pseudo-cron
Sezione intitolata “1. Disattiva lo pseudo-cron”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.
2. Aggiungi un cron reale ogni minuto
Sezione intitolata “2. Aggiungi un cron reale ogni minuto”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>&1Binario PHP (ottimo anch’esso con accesso SSH):
* * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1cPanel: 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_cronRegistrati sul servizio, aggiungi quell’URL, imposta l’intervallo a 1 minuto e salva. Questo richiamerà il cron di WordPress dall’esterno a intervalli fissi.
Risoluzione dei problemi
Sezione intitolata “Risoluzione dei problemi”- 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_CRONsia 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.