Comment créer une tâche cron depuis le LWS Panel ?

Procédure

Qu'est-ce qu'une tâche cron ?

Le but de la tâche cron est de lancer automatiquement un script, une commande, un programme à des périodes définies.

Avec "LWS Tâche cron", vous pouvez planifier le démarrage d'un script de votre site à différentes périodicités. Par exemple, une fois par semaine, une fois par jour, le 8 de chaque mois, ...

Un timeout de 240s est appliqué sur ces tâches, ce qui veut dire que si votre script prend plus de 4 minutes à s'exécuter, celui-ci sera coupé automatiquement après 4 minutes.
 

Comment créer une tâche cron ?

1. Accédez à l'outil Tâche Cron

Dans un premier temps, connectez-vous à votre panel client LWS

Rendez-vous ensuite dans la gestion du service pour lequel vous voulez créer une tâche cron.

Une fois dans la gestion de votre service, rechercher le bloc "Base de données & PHP" et cliquez sur "Tâches Cron"

Comment créer une tâche cron depuis le LWS Panel ?

 

2. Configuration de la périodicité de la tâche Cron

Le premier élément à configurer pour votre tâche cron est sa périodicité.

À ce niveau, LWS propose dans son outil des pré-réglages permettant de configurer cela en 1 clic.

Pour cela, il suffit d'utiliser la première liste tout en haut du formulaire et de sélectionner un des paramètres proposés. Cela remplira automatiquement les champs afin de faire correspondre la périodicité avec celle-ci indiqué dans la liste que vous avez sélectionnée.

Comment créer une tâche cron depuis le LWS Panel ?

 

Si la périodicité que vous voulez mettre en place n'est pas proposé dans cette première liste, pas d'inquiétude, nous avons la possibilité de configurer chaque élément.

Pour chaque élément (minutes, heures, jours, ...) vous pouvez soit entrer manuellement les valeurs, soit vous aider du champ liste se trouvant à droite de chaque champ.

Donc si par exemple je veux que ma tâche se lance tous les jours à 12h27, il suffit de sélectionner dans la liste attachée au champ minute le chiffre 27 et de sélectionner 12: 00 pm (midi) dans liste attachée au champ heure.

 

Astuces / Conseils

  • Sauf cas très particulier, nous ne conseillons pas de paramétrer une tâche cron pour qu'elle s'exécute toutes les minutes afin de ne pas saturer le serveur et donc diminuer les performances de votre service.
  • Préférez des tâches qui s'exécutent la nuit et à des heures particulières (comme par exemple 03h47 du matin) pour éviter d'exécuter vos tâches en même temps que de possibles tâches auto comme peuvent le faire certains CMS par exemple ou outils utilisés dans votre site.

 

3. Configuration du champ commande

Il existe trois façons pour appeler son script via l'outil Tâche Cron :

  • Appel PHP
  • Appel wget
  • Appel cURL

 

La différence entre ces trois possibilités réside principalement dans leurs façons d'exécuter votre script.

Lors d'un appel Wget ou Curl, cela passe par le protocole HTTP, c'est-à-dire que cela sera soumis aux configurations et aux restrictions Apaches tel que le délai d'attente (timeout) qui peut être relativement court.

Concernant l'appel PHP, celui-ci sera exempt des limites que nous avons pu évoquer avec les deux autres méthodes. Considérez l'appel PHP comme si vous passiez par une connexion SSH.

 

On pourrait donc se demander quelle méthode choisir pour mettre en place sa tâche Cron. Je répondrais à cela qu'il n'y a pas de réelles différences sur des scripts basiques qui s'exécutent rapidement. Cependant, si votre tâche CRON est assez importante avec pas mal d'actions réalisées et donc un temps d'exécution un peu plus long, la méthode la plus adaptée sera l'appel par PHP. Contrairement à Curl ou Wget, le délai d’attente (timeout) sera plus long (4 min).

 

Nous allons voir, pour chacun des appels mentionnés plus haut, comment mettre en place une tâche cron. Nous prendrons en exemple un site simple appelant un script à la racine.

 

Appel cURL

Lors d'un appel curl qui utilise le protocole HTTP, nous allons simplement appeler l'URL vers notre fichier de cette manière

curl https://www.mon-domaine.fr/cron.php

 

On peut également être amené d'envoyer des paramètres à notre script. Pour cela, il suffira d'ajouter ceux-ci de cette manière :

curl -d "param1=value1&param2=value2" https://www.mon-domaine.fr/cron.php

On pourra ainsi dans le code de notre script récupérer ces valeurs paramétrées en POST.

 

Appel Wget

Lors d'un appel Wget qui utilise lui aussi le protocole HTTP, comme pour l'appel cURL, nous allons également appeler l'URL de notre script. Cela donnera :

wget "https://www.mon-domaine.fr/cron.php"

 

Dans le cas où on doit passer des paramètres au script, avec Wget, on n'aura pas d'autres choix que de passer les paramètres en GET. Voici comment écrire la commande :

wget "https://www.mon-domaine.fr/cron.php?param1=value1&param2=value2"

Dans le script, on pourra récupérer ces deux paramètres en GET.

 

Appel PHP

Dans le cas d'un site simple, imaginons que le fichier où se trouve mon script se nomme cron.php

Il suffira de rentrer dans l'outil Tâche Cron la commande suivante :

php /htdocs/cron.php

 

Ici, la version de PHP qui sera utilisé pour exécuter votre script sera par défaut la 8.0.

Si vous souhaitez utiliser une version précise de PHP, il suffira de modifier légèrement l'appel. Par exemple, si on veut utiliser la version 7.2 pour exécuter le script, voilà la commande a appelé :

php72 /htdocs/cron.php

 

Il se peut également qu'on ait besoin de passer un argument qui serait utilisé ensuite dans notre script.

Par exemple, imaginons que notre script a pour but d'envoyer un mail selon un critère à définir comme la date d'anniversaire. On pourrait donc vouloir passer ce critère dans l'appel. Voici comment le faire via la ligne de commande :

php72 /htdocs/cron.php type=anniversaire

 

Cas particulier

Il existe également des cas particuliers selon ce que vous utilisez pour votre site.

Par exemple, dans le cas d'un site créé avec le framework Cakephp, la configuration de tâche CRON sera un peu différente car passera par une commande SHELL appelée par le système du framework.

Imaginons que nous avons un site e-commerce créé avec le framework Cakephp et que nous cherchons à mettre en place un script qui va envoyer un mail au meilleur client pour leur proposer un code promo.

Nous allons créer une commande Cake que nous appellerons SendCP dans lequel se trouvera le script gérant ce qu'on souhaite faire. Voici comment nous configurerons la tâche Cron :

php72 /htdocs/Console/cake.php SendCP

 

Il serait long de faire un exemple de chaque cas mais avec ce qui a été donné ici, vous avez déjà une bonne base pour utiliser l'outil Tâche Cron.

Via les différents exemples, nous savons maintenant écrire notre commande pour ;

  • exécuter simplement notre script selon la périodicité choisie
  • exécuter notre script en ajoutant des paramètres et selon la périodicité choisie

 

4. Création d'un suivi logs

Nous allons voir maintenant comment créer un fichier de suivi qui permettra d'avoir une visualisation de ce qu'il s'est passé lors du script appelé par Cron.

Pour cela, nous allons partir de l'exemple ci-dessous pour notre script appelé en CRON.

 

Exemple de function echo PHP pour le fichier logs

<?php

/* Permet de ne pas avoir de soucis de 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");

/* Va écrire dans le fichier la date actuelle exemple : 2023/01/19 12:24:01 */
/* PHP_EOL permet de sauter une ligne dans le fichier */
echo date('Y/m/d h:i:s').PHP_EOL;

/* Ecrira la phrase ci dessous dans le le fichier log */
echo 'Enregistrement de mon Cron'.PHP_EOL.PHP_EOL;

?>

 

Rendu du fichier logs suite au lancement du script via Cron Job

2023/01/19 02:57:01
Enregistrement de mon Cron

2023/01/19 03:57:01
Enregistrement de mon Cron

2023/01/19 04:57:01
Enregistrement de mon Cron

2023/01/19 05:57:01
Enregistrement de mon Cron

2023/01/19 06:57:01
Enregistrement de mon Cron

2023/01/19 07:57:01
Enregistrement de mon Cron

2023/01/19 08:57:01
Enregistrement de mon Cron

Ce que vous mettrez dans votre fichier log dépendra donc de vous et de ce que vous voulez suivre dans votre script. Par exemple, cela peut par exemple être un listing des actions avec, pour chacun, leur résultat.

 

Exemple appel cURL avec retour dans un fichier log

Pour un appel cURL, voici la commande à renseigner dans le champ "Commande" :

curl https://www.mon-domaine.fr/cron.php >> /htdocs/logs/cron_curl.log

Dans cet exemple, les retours d'écriture (echo PHP) se feront dans le fichier cron_curl.log dans le dossier logs. Si le fichier ou le dossier n'existe pas, ils seront créés automatiquement.

 

Exemple appel wget avec retour dans un fichier log

Pour un appel Wget, voici la commande à mettre en place :

wget -O - -q https://www.mon-domaine.fr/cron.php >> /htdocs/logs/cron_wget.log

Dans cet exemple, les retours d'écriture (echo PHP) se feront dans le fichier cron_wget.log dans le dossier logs. Si le fichier ou le dossier n'existe pas, ils seront créés automatiquement.

 

Exemple appel PHP avec retour dans un fichier log

Pour un appel PHO, voici la commande à mettre en place :

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

Dans cet exemple, les retours d'écriture (echo PHP) se feront dans le fichier cron_php.log dans le dossier logs. Si le fichier ou le dossier n'existe pas, ils seront créés automatiquement.

 


 

Comment gérer mes tâches cron ?

Une fois que vous aurez créé vos tâches crons, il vous sera possible de les retrouver directement dans le listing qui apparaîtra en dessous du formulaire d'ajout.

Comment créer une tâche cron depuis le LWS Panel ?

 

Vous y trouverez ici un listing avec la commande enregistrée, la périodicité et la possibilité de supprimer un Cron ou de le mettre en pause.

Comment créer une tâche cron depuis le LWS Panel ?

 

Notez cet article


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

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 toutes questions non liées à cette documentation ou problèmes techniques sur l'un de vos services, cliquez ici si vous souhaitez contacter le support commercial ou le support technique