Per Web Hosting e Performance Hosting

I cronjob sono uno strumento estremamente efficace per automatizzare le attività ricorrenti. Tuttavia, se configurati in modo errato, possono compromettere le prestazioni del tuo sito web o non essere eseguiti affatto.

In questo articolo scoprirai quali punti tenere a mente durante la creazione e la gestione dei tuoi cronjob.

1. Non selezionare un intervallo di esecuzione troppo breve

Evita intervalli troppo ravvicinati tra le esecuzioni. Ti consigliamo di lasciare trascorrere almeno 5 minuti prima che un cronjob venga eseguito nuovamente.

  • Perché è importante: in caso di esecuzioni troppo frequenti (ad es. ogni minuto), durante i picchi di carico del server i processi potrebbero sovrapporsi. Ciò può causare esecuzioni parallele che rallentano ulteriormente il server e bloccano i processi.

2. Configurare le notifiche di errori (MAILTO)

Per evitare di dover controllare manualmente i file di log in caso di problemi, è opportuno farsi inviare i messaggi di errore via e-mail.

Per farlo, aggiungere la variabile MAILTO nella prima riga del tuo file crontab:

MAILTO=mario.rossi@esempio.com

3. Utilizzare la versione corretta di PHP

Se desideri eseguire direttamente gli script PHP, devi indicare il percorso assoluto dell'interprete PHP. Assicurati inoltre di utilizzare una versione di PHP compatibile con il tuo script.

Utilizza sempre il percorso completo del file binario (ad esempio, /usr/bin/php8.3).

Versione di PHP Percorso dell'interprete  
PHP 8.4 /usr/bin/php8.4  
PHP 8.3 /usr/bin/php8.3  
PHP 8.2 /usr/bin/php8.2  
Legacy (Older) /usr/bin/php8.1
/usr/bin/php8.0
/usr/bin/php7.4
/usr/bin/php7.3
/usr/bin/php7.2
/usr/bin/php7.1
/usr/bin/php5.5
/usr/bin/php5.4
/usr/bin/php5.2
/usr/bin/php4.4
Idealmente, utilizza le versioni più recenti.

Nota bene

/usr/bin/php si riferisce a PHP 4.4 (tramite symlink). Per evitare incompatibilità, ti raccomandiamo di specificare esplicitamente il numero di versione (ad esempio php8.3).

4. Indicare il percorso assoluto dello script

Il demone cron non conosce la tua cartella corrente. Indica quindi sempre il percorso completo (assoluto) del tuo script. Il percorso dipende dalla data di creazione del tuo contratto.

Ecco un esempio di riga per un cronjob (eseguito ogni 10 minuti):

A) Contratti dal 18/09/2025 (nuovi)

*/10 * * * * * /usr/bin/php8.2 -f /home/www/test.php

B) Contratti stipulati prima del 18/09/2025 (esistenti)

*/10 * * * * * /usr/bin/php8.2 -f /homepages/12/d12345678/htdocs/test.php

 

Suggerimento: se non sai con certezza qual è il tuo percorso, questo articolo può essere d'aiuto: Individuare il percorso assoluto (document root) di un sito web

5. Utilizzare impostazioni personalizzate di php.ini (HTTP request)

Se apri uno script PHP direttamente tramite l'interprete (come descritto sopra), le impostazioni individuali del tuo file php.ini verranno ignorate.

Se il tuo script richiede impostazioni specifiche di php.ini (ad esempio, memory_limit o max_execution_time), dovresti invece eseguire il cronjob tramite HTTP request via cURL. In questo modo si simula un accesso tramite browser web.

Esempio:

*/10 * * * * * /usr/bin/curl -s https://example.com/test.php > /dev/null

 

Utilizzo con protezione delle directory

Per i pacchetti di hosting condiviso, ti consigliamo di memorizzare gli script in directory protette per motivi di sicurezza. Per consentire a curl di accedervi, devi introdurre il nome utente e la password con il parametro -u.

Esempio con autenticazione:

*/10 * * * * * /usr/bin/curl -s -u user:password https://example.com/test.php > /dev/null