Siti web
Configurazione e gestione di Cron Jobs
A cron job runs a command on a schedule, in the background, whether or not anyone is visiting your site. This guide covers adding one in KPanel, writing the schedule and the command correctly for…
Configurazione e Gestione dei Cron Job
Un cron job esegue un comando secondo una pianificazione, in background, indipendentemente dal fatto che qualcuno stia visitando il tuo sito. Questa guida copre l'aggiunta di uno in KPanel, la corretta scrittura della pianificazione e del comando per questa piattaforma, la sostituzione dello scheduler integrato inaffidabile di WordPress, e la ricerca dell'output quando un job non fa quello che ti aspetti.
Dove si trova Cron in KPanel
Cron appartiene a un sito, quindi lo raggiungi dal sito piuttosto che dal menu principale:
- Accedi a KPanel e fai clic su Websites nella barra laterale sinistra.
- Fai clic sul sito che desideri.
- Nel menu del sito, apri Advanced, quindi Cron.
L'indirizzo diretto è /websites/<site-id>/cron. Vedrai una tabella dei job esistenti, o una schermata vuota se il sito non ne ha nessuno.

Aggiungere un Job
Fai clic su Add Cron Job in alto a destra. Il modulo ha tre campi.
Schedule
Sei pulsanti preimpostati compilano l'espressione per te:
| Pulsante | Espressione |
|---|---|
| Every minute | * * * * * |
| Every 5 min | */5 * * * * |
| Every hour | 0 * * * * |
| Daily 2AM | 0 2 * * * |
| Weekly Sunday | 0 2 * * 0 |
| Monthly 1st | 0 2 1 * * |
Oppure digita la tua in Cron expression. I cinque campi, in ordine, sono minuto, ora, giorno del mese, mese, giorno della settimana:
minute hour day-of-month month day-of-week
0 3 * * *viene eseguito alle 3:00 ogni giorno.*/15 * * * *viene eseguito ogni quindici minuti.0 9 * * 1viene eseguito alle 9:00 ogni lunedì.30 1 1 * *viene eseguito all'1:30 del primo di ogni mese.0 */6 * * *viene eseguito ogni sei ore, in punto.
Label
Un nome che riconoscerai più tardi, come WordPress cron o Nightly stock sync. È quello che la tabella dei job ti mostra, quindi rendilo descrittivo: job 3 non aiuta nessuno alle 2 del mattino.
Command
Il comando shell da eseguire. Fai clic su Save per creare il job.
Usa percorsi completi. Cron viene eseguito con un ambiente minimo e senza il tuo profilo shell, quindi un semplice php o una directory relativa che funziona quando sei connesso tramite SSH non funzionerà silenziosamente qui. Scrivi il percorso completo, ogni volta.
Scrivere il Comando
I job vengono eseguiti come l'utente di sistema del tuo sito, quindi la tua home directory è l'ancoraggio corretto e ~ si risolve correttamente. I file del tuo sito si trovano in:
~/htdocs/yourdomain.co.nz
Puoi confermare il percorso esatto nella scheda Files, quindi SFTP, che lo stampa sotto Site files.
Comandi tipici:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
Testa il comando prima di pianificarlo. Incollalo nella sezione WordPress, quindi Console se è un comando wp, oppure eseguilo tramite SSH. Un job che non avrebbe mai funzionato è molto più facile da individuare al prompt che alle 3 del mattino in un file di log.
Sostituzione dello Scheduler Integrato di WordPress
WordPress viene fornito con il suo pseudo-scheduler, WP-Cron, che si attiva solo quando qualcuno carica una pagina. Su un sito tranquillo, i post programmati vengono pubblicati in ritardo e le email rimangono in coda non inviate. Su un sito affollato, ogni visitatore paga il costo del controllo della pianificazione.
Un vero cron job risolve entrambi i problemi. KPanel fa l'intero scambio per te:
- Apri il sito, quindi la scheda WordPress.
- Apri la sezione WP-Cron.
- Fai clic su Enable system cron.
Questo aggiunge una pianificazione che esegue WP-Cron ogni cinque minuti e imposta DISABLE_WP_CRON in modo che i caricamenti delle pagine smettano di attivarlo. Remove system cron nella stessa schermata annulla entrambe le parti.
Se preferisci farlo manualmente, sono due passaggi:
Disabilita la versione attivata dai visitatori. Aggiungi questo a wp-config.php, sopra la linea /* That's all, stop editing! */, utilizzando Files, quindi File Manager:
define( 'DISABLE_WP_CRON', true );
Aggiungi il job reale. In Advanced, quindi Cron:
- Schedule:
*/5 * * * * - Label:
WordPress cron - Command:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
Non saltare la parte DISABLE_WP_CRON. Con entrambi in esecuzione, ogni attività pianificata può attivarsi due volte: email duplicate, elaborazione ordini duplicate, addebiti duplicati su un plugin di abbonamento. Usa l'azione con un clic nella sezione WP-Cron e questo non può accadere.
WooCommerce e Code di Background
WooCommerce utilizza una coda di background per i cambiamenti dello stato dell'ordine, i rinnovi degli abbonamenti, le email e gli aggiornamenti delle scorte. Si basa su WP-Cron, quindi è esattamente il carico di lavoro che soffre su un negozio tranquillo.
Una volta che la vera pianificazione è attiva, la coda viene elaborata ogni cinque minuti. Guardala in WooCommerce, quindi Status, quindi Scheduled Actions in wp-admin.
Un negozio ad alto volume può passare a */2 * * * *. Scendere al di sotto di quello raramente aiuta: passi più tempo nell'avviare processi che nel fare il lavoro. Vedi Setting Up WooCommerce.
Gestire i Job Esistenti
La tabella dei job mostra Label, Schedule, Command, Last run e Status, con due azioni su ogni riga:
- Disable mette in pausa un job senza eliminarlo, e diventa Enable per riportarlo in funzione. Usa questo quando stai testando se un job sta causando un problema.
- Delete lo rimuove permanentemente. Ti viene chiesto di confermare, e le esecuzioni pianificate si fermano immediatamente.
L'eliminazione di un cron job non può essere annullata. La pianificazione viene rimossa dal server in quel momento. Se stai solo cercando di fermarlo temporaneamente, usa Disable.
Trovare l'Output
Ogni job che Kapsule crea ha il suo output acquisito per te. L'output standard e gli errori vengono aggiunti a un file di log in una directory cron-logs nella home directory dell'utente del tuo sito, un file per job.
Quel log è la risposta a quasi tutte le domande "il mio job è stato eseguito?", perché registra quello che il comando ha stampato e qualsiasi errore che ha sollevato.
Per leggerlo, connettiti tramite SSH e cerca in ~/cron-logs/. SSH utilizza l'autenticazione con chiave, quindi aggiungi prima la tua chiave pubblica dalla scheda Files, quindi SSH Keys del sito: vedi Adding SSH Keys.
File Manager e gli account SFTP sono limitati alla tua directory del sito, ~/htdocs/yourdomain.co.nz, e cron-logs si trova un livello sopra di essa. È intenzionale: mantiene un appaltatore con accesso SFTP fuori da tutto tranne il sito web. Usa SSH nativo per raggiungere i log, o reindirizza l'output nella tua directory del sito come mostrato di seguito.
Se preferisci avere l'output da qualche parte che File Manager possa aprire, reindirizzalo tu stesso:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1 invia gli errori allo stesso file dell'output normale. Senza di esso, gli errori non vanno da nessuna parte.
Qualsiasi cosa nella tua directory del sito può potenzialmente essere richiesta sul web. Metti un log reindirizzato sotto wp-content piuttosto che alla radice del sito, assegnagli un nome che nessuno potrebbe indovinare, ed eliminalo una volta che hai finito il debug.
Buone Pratiche
- Scagliona le tue pianificazioni. Sei job tutti impostati su
0 2 * * *iniziano tutti insieme. Distribiscili:0 2,10 2,20 2. - Non usare ogni minuto a meno che tu non lo abbia davvero bisogno.
*/5è sufficiente per quasi tutto, incluso WordPress e WooCommerce. - Mantieni i job brevi. Un job che impiega più tempo del suo intervallo si sovrapporrà alla prossima esecuzione.
- Reindirizza l'output per qualsiasi cosa rumorosa, in modo che un job chiacchierone non riempia il tuo disco.
- Rivedi l'elenco occasionalmente. I job lasciati da un plugin che hai rimosso continuano a essere eseguiti.
Risoluzione dei Problemi
Il job non sembra mai essere eseguito. Controlla prima il percorso. Apri il file di log. Quindi conferma che lo stato è Active e non Disabled. Quindi esegui lo stesso comando tramite SSH e vedi cosa dice.
"command not found" nel log. Un percorso completo mancante. Usa /usr/bin/php, /usr/bin/wp, /usr/bin/curl piuttosto che il nome semplice.
Permesso negato. Il job viene eseguito come l'utente di sistema del tuo sito. Quell'utente ha bisogno di possedere, o almeno essere in grado di leggere, tutto ciò che il comando tocca. Controlla i permessi in Using the File Manager.
Le attività di WordPress vengono ancora eseguite in ritardo. Conferma che entrambe le parti dello scambio siano attive: la pianificazione esiste in Advanced, quindi Cron, e DISABLE_WP_CRON è impostato. La sezione WP-Cron sulla scheda WordPress mostra lo stato attuale di entrambi.
Il job viene eseguito ma il sito è lento mentre lo fa. Spostalo in un'ora più tranquilla, o dividi il lavoro in batch più piccoli. L'utilizzo delle risorse a livello di sito è visibile in Performance: vedi Improving Website Speed.
Un job ha smesso di funzionare dopo un aggiornamento del plugin. Il percorso del comando potrebbe essere cambiato. Controlla il log, quindi aggiorna il comando dalla tabella dei job eliminando il vecchio job e aggiungendone uno corretto.