1. Accueil
  2. Références
  3. Astuces techniques
  4. Tâches CRON — différences entre Wget, Curl et PHP

Tâches CRON — différences entre Wget, Curl et PHP

Cet article a pour but de vous aider à faire la différence entre les commandes du client Wget, du langage Curl et du langage PHP.

Si vous utilisez N0C, consultez plutôt l’article Tâches CRON — différences entre Wget, Curl et PHP.

Différences principales

Pour voir les différences, commençons par examiner les quatre commandes suivantes :

wget -O - -q 'https://www.planethoster.net/modules/cron.php?secure_key=ILOVEPH' --user-agent="PlanetHoster/CRON" > /dev/null 2>&1
curl --user-agent "planethoster" https://www.planethoster.net/modules/cron.php
php -q /home/USERNAME/public_html/modules/cron.php argument=valeur >/dev/null 2>&1
/opt/cpanel/ea-php70/root/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php

La différence la plus importante demeure que Wget et Curl passent par le protocole HTTP. Dès lors, des configurations ou des restrictions Apache s’ajoutent. Le délai d’attente d’Apache (timeout) en est un bon exemple.

En revanche, lorsque vous lancez une tâche Cron en langage PHP, vous n’avez pas ce type limite, car c’est comme si vous passiez par une connexion SSH.

La manière la plus robuste de lancer une tâche Cron assez importante est donc de le faire en PHP. Contrairement à Curl ou Wget, le délai d’attente (timeout) du serveur web n’aura aucune répercussion si votre script doit s’exécuter durant un certain temps.

Différentes version de PHP et tâches Cron

Si vous laissez la commande « php » telle quelle, la tâche utilisera la version native/recommandée définie dans le panneau de contrôle WHM (MultiPHP Manager). Si votre script doit utiliser une autre version de PHP, vous devez le spécifier en donnant le chemin complet de PHP. 

Par exemple, pour du World cPanel CloudLinux et du HybridCloud cPanel Cloudlinux, il faut utiliser cette commande, où XX doit être remplacé par la version de PHP désirée entre php56, php70, php71, php72 et php73 :

/opt/alt/phpXX/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php

Pour du cPanel HybridCloud non-CloudLinux, il faut utiliser cette commande, où XX doit être remplacé par la version de PHP désirée entre php56, php70, php71, php72 et php73 :

/usr/local/bin/ea-phpXX

Pour N0C, il faut utiliser cette commande, où XX doit être remplacé par la version de PHP désirée entre php44, php51, php52, php53, php54, php55, php56, php70, php71, php72, php73, php74, et php80 :

/opt/alt/phpXX/usr/bin/php

Astuces

1-Lorsque vous lancez un Cron avec la commande Curl ou Wget, vous devez absolument spécifier un « user-agent » comme dans l’exemple plus haut. Sans quoi, il est possible que votre requête soit bloquée au niveau du serveur à cause du pare-feu applicatif web ModSecurity.

2- Nous vous conseillons aussi de ne pas lancer le script toutes les minutes. Il est préférable de le lancer durant la nuit.

3- Si vous recevez trop de courriel de tâches Cron, vous pouvez désactiver cette notification en ajoutant ceci à la fin de votre tâche :  >/dev/null 2>&1.

4- Si vous avez des arguments « GET » à donner à votre script, vous ne devez pas séparer l’argument du fichier par un « ? ». Vous devez simplement mettre une espace.

Exemple de tâche CRON dans le cPanel

Mis à jour le 17 juillet 2024

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

Articles connexes