Notez cet article :
Cet article vous a été utile ?
Oui
Non
Vous avez noté 0 étoile(s)
Sommaire
Procédure
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.
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"
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.
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
3. Configuration du champ commande
Il existe trois façons pour appeler son script via l'outil Tâche Cron :
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¶m2=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¶m2=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 ;
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.
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.
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.
Notez cet article :
Cet article vous a été utile ?
Oui
Non
0mn de lecture
Multi domaines - Mettre plusieurs domaines sur un même hébergement web
1mn de lecture
Est-il possible de supprimer l'anti-spam RSpamD sur les hébergements mutualisés ?
0mn de lecture
Comment visualiser les mails envoyés via la fonction mail PHP et bloqués par SPAMASSASSIN ?