PlanetHoster PlanetHoster host Your world

Tâche CRON difference entre wget ou curl ou encore PHP


Voyez les 4 commandes si dessous 

  • 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


Différences

La différence la plus importante vient du fait que WGET et CURL passe par le protocole HTTP, donc des configurations/restrictions Apache s'ajoutent. Par exemple, le Timeout d'Apache. Tandis que lorsque vous lancez une tâche CRON php, vous n'avez pas ce type limite. (C'est comme si vous passiez par une connexion SSH)

Donc, la manière la plus robuste de lancer une tâche CRON assez importante est de le faire par PHP. Contrairement à CURL ou WGET, vous ne serez pas impacté par le timeout du serveur web si votre script doit s'exécuter durant un certain temps. 


Différente version de PHP et tâche cron

Si vous laissez la commande "php" tel quel, la tâche utilisera la version native/recommandé définie dans 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

Exemples : 

  • /opt/alt/php56/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php
  • /opt/alt/php70/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php
  • /opt/alt/php71/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php
  • /opt/alt/php72/usr/bin/php /home/cpaneluser/public_html/path/to/cron.php
  • /opt/alt/php73/usr/bin/php /home/cpaneluser/public_html/path/to/cron.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é au niveau du serveur du au parfeux mod_security

2- Nous vous conseillons aussi de ne pas lancer le script toutes les minutes et de lancer plutôt cela durant la nuit.

3- Si vous recevez trop de courriel de tâche 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 argument GET à donner à votre script vous ne devez pas séparer l'argument du fichier par un "?" vous devez simplement mettre un espace.

 

Exemple de tâche CRON dans le cPanel