Come si crea un cron job dal pannello LWS?

Procédure

Che cos'è un cron job?

Lo scopo di un cron job è quello di eseguire automaticamente uno script, un comando o un programma a orari prestabiliti.

Con"LWS cron job", potete programmare l'esecuzione di uno script sul vostro sito a orari diversi. Ad esempio, una volta alla settimana, una volta al giorno, l'8 di ogni mese, ecc.

Cron è uno strumento molto utile per gli amministratori di sistema per automatizzare varie attività, come il backup dei dati, l'aggiornamento del software, l'invio di e-mail, ecc.

A queste attività viene applicato un timeout di 240s, il che significa che se il vostro script impiega più di 4 minuti per essere eseguito, verrà automaticamente interrotto dopo 4 minuti.

Come si crea un cron job?

Accedere allo strumento Cron Task

Per prima cosa, è necessario accedere al proprio account LWS e accedere all'hosting condiviso per il quale si desidera creare un cron job.

Una volta entrati nella gestione del servizio, cercate il blocco"Database & PHP" e cliccate su"Cron tasks".

Come si crea un cron job dal pannello LWS?

Configurazione della frequenza del cron job

La prima cosa da configurare per il cron job è la sua periodicità.

A questo livello, LWS offre delle preimpostazioni nel suo strumento in modo da poterle configurare in un clic.

Per farlo, basta utilizzare il primo elenco in cima al modulo e selezionare uno dei parametri proposti. I campi verranno automaticamente compilati in base alla periodicità indicata nell'elenco selezionato.

Come si crea un cron job dal pannello LWS?

Se la periodicità che si desidera impostare non è proposta in questo primo elenco, non preoccupatevi, possiamo configurare ogni elemento.

Per ogni elemento (minuti, ore, giorni, ecc.), è possibile inserire i valori manualmente, oppure utilizzare il campo elenco a destra di ogni campo.

Se, ad esempio, voglio che la mia attività inizi ogni giorno alle 12:27, basta selezionare il numero 27 nell'elenco allegato al campo dei minuti e selezionare 12:00 pm (mezzogiorno) nell'elenco allegato al campo delle ore.

Suggerimenti / Consigli

  • Tranne che in casi molto particolari, non è consigliabile impostare un cron job da eseguire ogni minuto, per non saturare il server e quindi ridurre le prestazioni del servizio.
  • Preferite attività che vengono eseguite di notte e a orari specifici (come le 3.47 ) per evitare di eseguire le vostre attività contemporaneamente a eventuali attività automatiche, come potrebbero fare alcuni CMS o strumenti utilizzati sul vostro sito.

Configurazione del campo di comando

Esistono tre modi per richiamare il vostro script tramite lo strumento Cron Task:

  • Chiamata PHP
  • Chiamata a wget
  • chiamata cURL

La differenza tra queste tre opzioni risiede principalmente nel modo in cui eseguono lo script.

Una chiamata Wget o Curl utilizza il protocollo HTTP, il che significa che sarà soggetta alle configurazioni e alle restrizioni di Apache, come il timeout, che può essere relativamente breve.

Lachiamata PHP, invece, sarà libera dalle limitazioni che abbiamo discusso con gli altri due metodi. Pensate alla chiamata PHP come a una connessione SSH.

Ci si potrebbe quindi chiedere quale metodo scegliere per impostare il task Cron. La risposta è che non ci sono differenze reali per gli script di base che vengono eseguiti rapidamente. Tuttavia, se il vostro task CRON è piuttosto grande, con molte azioni eseguite e quindi un tempo di esecuzione leggermente più lungo, il metodo più adatto sarà unachiamata PHP. A differenza di Curl o Wget, il timeout sarà più lungo (4 minuti).

Vedremo come impostare un cron job per ciascuna delle chiamate sopra menzionate. Prenderemo come esempio un semplice sito che chiama uno script root.

Chiamata cURL

Quando si effettua una chiamata curl utilizzando il protocollo HTTP, si chiama semplicemente l'URL del nostro file come segue

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Potrebbe anche essere necessario inviare dei parametri al nostro script. Per farlo, basta aggiungerli come segue:

curl -d "param1=valore1&param2=valore2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Questo ci permetterà di recuperare i valori dei parametri nel codice del nostro script POST.

Opzione Ruolo
-s Modalità silenziosa (nessuna barra di avanzamento).
-H "Cache-Control: no-cache Forza il no-cache lato server.
> /dev/null Reindirizza l'output per non salvare nulla.

Chiamata a Wget

Durante una chiamata a Wget, che utilizza anche il protocollo HTTP, come per la chiamata a cURL, chiameremo anche l'URL del nostro script. In questo modo si otterrà :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"

Se abbiamo bisogno di passare dei parametri allo script, con Wget non abbiamo altra scelta che passare i parametri in GET. Ecco come scrivere il comando :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1&param2=value2"

Nello script, possiamo recuperare questi due parametri in GET.

Opzione Ruolo
--no-cache Evita l'uso di cache intermedie (utile con alcuni proxy).
--output-document=/dev/null Non memorizza nulla a livello locale.
--header="Cache-Control: no-cache" Invia un'intestazione HTTP per evitare la cache lato server.

Chiamata PHP

Nel caso di un sito semplice, immaginiamo che il file contenente il mio script si chiami cron.php

È sufficiente inserire il seguente comando nello strumento Cron Task:

php /htdocs/cron.php

In questo caso, la versione di PHP utilizzata per eseguire lo script sarà la 8.0 per impostazione predefinita.

Se si desidera utilizzare una versione specifica di PHP, è sufficiente modificare leggermente la chiamata. Per esempio, se si vuole usare la versione 7.2 per eseguire lo script, questo è il comando chiamato :

php72 /htdocs/cron.php

Potrebbe anche essere necessario passare un argomento che sarà poi utilizzato nel nostro script.

Per esempio, immaginiamo che lo scopo del nostro script sia quello di inviare un'e-mail in base a un criterio da noi definito, come la data di nascita. Potremmo quindi voler passare questo criterio nella chiamata. Ecco come farlo tramite la riga di comando:

php72 /htdocs/cron.php tipo=anniversario

Casi speciali

Esistono anche casi speciali, a seconda di ciò che si usa per il proprio sito.

Per esempio, nel caso di un sito creato con il framework Cakephp, la configurazione del task CRON sarà un po' diversa, perché sarà effettuata tramite un comando SHELL chiamato dal sistema del framework.

Immaginiamo di avere un sito di e-commerce creato con il framework Cakephp e di voler impostare uno script che invii un'e-mail al miglior cliente offrendogli un codice promozionale.

Creeremo un comando di Cake che chiameremo SendCP, che conterrà lo script che gestisce ciò che vogliamo fare. Ecco come configurare il task Cron:

php72 /htdocs/Console/cake.php SendCP

Sarebbe lungo fare un esempio per ogni caso, ma con quello che è stato dato qui, si ha già una buona base per usare lo strumento dei task di Cron.

Utilizzando i vari esempi, ora sappiamo come scrivere il nostro comando per :

  • eseguire semplicemente il nostro script agli intervalli prescelti
  • eseguire il nostro script aggiungendo dei parametri e agli intervalli prescelti.

Creare un file di log

Ora vedremo come creare un file di log in modo da poter vedere cosa è successo durante lo script chiamato da Cron.

A tale scopo, utilizzeremo l'esempio seguente per il nostro script CRON.

Esempio di funzione echo in PHP per il file di log

<?php /* Così non dovrete preoccuparvi della cache */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Scrivere la data corrente nel file, ad esempio: 2023/01/19 12:24:01 */ /* PHP_EOL consente di saltare una riga del file */ echo date('Y/m/d h:i:s').PHP_EOL; /* Scrivere la frase sottostante nel file di log */ echo 'Recording my Cron'.PHP_EOL.PHP_EOL; ?>

Rendering del file di log dopo l'avvio dello script tramite Cron Job

2023/01/19 02:57:01 Registrazione del mio Cron 2023/01/19 03:57:01 Registrazione del mio Cron 2023/01/19 04:57:01 Registrazione del mio Cron 2023/01/19 05:57:01 Registrazione del mio Cron 2023/01/19 06:57:01 Registrazione del mio Cron 2023/01/19 07:57:01 Registrazione del mio Cron 2023/01/19 08:57:01 Registrazione del mio Cron

Ciò che si inserisce nel file di log dipenderà quindi dall'utente e da ciò che si vuole tracciare nello script. Ad esempio, potrebbe essere un elenco di azioni con il risultato per ciascuna di esse.

Esempio di chiamata cURL con ritorno in un file di log

Per una chiamata cURL, ecco il comando da inserire nel campo "Command":

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1

In questo esempio, verranno effettuati dei writeback (echo PHP) al file cron_curl.log nella cartella logs. Se il file o la cartella non esistono, verranno creati automaticamente.

Opzione Ruolo
-s Modalità silenziosa (nessuna barra di avanzamento).
-H "Cache-Control: no-cache" Forza il no-cache lato server.
> /htdocs/logs/cron_curl.log reindirizza l'output standard (stdout) a cron_curl.log.
2>&1 reindirizza anche gli errori (stderr) allo stesso file.

Esempio di chiamata a wget con ritorno a un file di log

Per una chiamata a Wget, ecco il comando da utilizzare:

wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1

In questo esempio, il feedback di scrittura (echo PHP) sarà inviato al file cron_wget.log nella cartella logs. Se il file o la cartella non esistono, verranno creati automaticamente.

Opzione Ruolo
--no-cache Evita l'uso di cache intermedie (utile con alcuni proxy).
--header="Cache-Control: no-cache" Invia un'intestazione HTTP per evitare la cache lato server.
--post-data="..." aggiunge un'intestazione HTTP personalizzata.
> /htdocs/logs/cron_wget.log reindirizza l'output standard (stdout) a cron_wget.log.
2>&1 reindirizza anche gli errori (stderr) allo stesso file.

Esempio di chiamata PHP con ritorno a un file di log

Per una chiamata a PHP, ecco il comando da utilizzare:

php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log

In questo esempio, il feedback di scrittura (echo PHP) sarà inviato al file cron_php.log nella cartella logs. Se il file o la cartella non esistono, verranno creati automaticamente.

Come posso gestire i miei task cron?

Visualizzare le attività cron create

Una volta create le attività cron, è possibile trovarle direttamente nell'elenco che appare sotto il modulo di aggiunta.

Come si crea un cron job dal pannello LWS?

Qui troverete un elenco con il comando registrato, la periodicità e l'opzione per eliminare un cron job o metterlo in pausa.

Come si crea un cron job dal pannello LWS?

Come si modifica un cron job?

Se avete un pacchetto LWS Starter o superiore, potete modificare il cron job del vostro pacchetto tramite il Terminale Web accessibile dall'amministrazione del pacchetto.

Per farlo, collegatevi al vostro hosting e accedete all'hosting condiviso per il quale volete modificare un cron job.

Cliccate su"Terminale" nella sezione "Software".

Come si crea un cron job dal pannello LWS?

Accedere al file cron utilizzando il seguente comando:

crontab -e

Come si crea un cron job dal pannello LWS?

Una volta entrati nel file cron, sfogliare il file per trovare l'attività che si desidera modificare. Ogni riga del file rappresenta un'attività separata. Modificate quindi il lavoro di cron, assicurandovi che la sintassi sia corretta. Quindi salvatelo utilizzando la scorciatoia da tastiera [CTRL] +X e poi"Y". Quindi premere [Invio].

È quindi possibile verificare se il cron job è stato modificato correttamente utilizzando il seguente comando:

crontab -l

Come si crea un cron job dal pannello LWS?

Utilizzo dei cron job con Cloudflare DNS

Perché i miei cron non funzionano con CloudFlare?

Avete collegato il vostro dominio a CloudFlare utilizzando il DNS di quest'ultimo e volete configurare un cron job dalla vostra area clienti nella sezione associata, ma il job viene eseguito solo una volta senza ripetersi all'intervallo di tempo desiderato. Questo problema è noto, CloudFlare blocca l'esecuzione dei cron inviati dai nostri servizi. Per superare questo problema, ecco un workaround.

Esecuzione di un cron job con CloudFlare

Le attività di cron configurate dall'area clienti non funzionano se si utilizza il DNS di CloudFlare. Per superare questo problema, seguite questa procedura:

  1. Creare un sottodominio (ad esempio: cron.domain.ext) dal vostro spazio cliente seguendo questa documentazione.
  2. Posizionate il file che deve essere eseguito dal vostro cron job nella cartella con il nome del vostro sottodominio sullo spazio FTP del vostro hosting.
  3. Create il vostro cron job dall'area clienti seguendo le istruzioni riportate sopra in questa documentazione.
  4. Collegatevi al vostro account CloudFlare collegato al vostro nome di dominio.

Nella sezione "DNS", aggiungete un record CNAME come mostrato nell'esempio seguente:

Come si crea un cron job dal pannello LWS?

Sostituite"cron" con il nome del vostro sottodominio e"domain.ext" con il nome del vostro dominio.

Assicuratevi che la nuvola sia grigia e non arancione. Questo indica a CloudFlare che non si desidera utilizzare i suoi servizi per questo sottodominio.

È quindi possibile fare clic sul pulsante"Aggiungi record".

Conclusione

Ora sapete come : - Capire lo scopo e il funzionamento di un cron job 🤖

  • Configurare ed eseguire automaticamente gli script utilizzando il task cron di LWS ⏱️
  • Accedere allo strumento Cron Task e configurare la periodicità
  • Utilizzare i diversi metodi di chiamata (PHP, wget, cURL) per i vostri script 🌐
  • Utilizzare i file di log per monitorare le attività cron 📝
  • Gestire, modificare e visualizzare i task cron creati 🛠️
  • Utilizzare le attività cron con Cloudflare DNS per risolvere i problemi di runtime 🛡️

Ci auguriamo che questo articolo vi abbia fornito tutte le chiavi per padroneggiare i task di cron e automatizzare le attività di sistema in modo efficiente.

Se avete domande, feedback o suggerimenti da condividere, non esitate a lasciarli in un commento. Grazie per aver letto e a presto per altri consigli pratici! 🙏💬

Vota questo articolo :

Questo articolo vi è stato utile ?

Article utile

Article non utileNo

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Articoli simili

0mn lettura

Multidominio - Mettere più domini sullo stesso servizio di web hosting

1mn lettura

È possibile rimuovere la funzione anti-spam di RSpamD su un hosting condiviso?

0mn lettura

Come posso visualizzare le e-mail inviate con la funzione PHP mail e bloccate da SPAMASSASSIN?


Fate una domanda al team LWS e alla sua comunità