Retournez à
Accueil /
Ne pas tomber dans le piège à CRON !
0
Pour diverses raisons, j'utilise cron, précisément crontab, pour lancer des scripts en PHP.
C'est l'un des moyens les plus rapides d'avoir une activité récurrente sur un des langages que je maîtrise le mieux.
C'est l'un des moyens les plus rapides d'avoir une activité récurrente sur un des langages que je maîtrise le mieux.
Il me permet d'activer le parcours d'une BDD ou l'import de données de façon récurrente, surtout quand on n'a pas accès à des triggers.
Le souci est que pour des raisons de rapidité, je bâtis mon script en passant par le serveur web donc le lien, l'url. Cela me permet de tester plus rapidement le script qu'un appel par la commande php, de mieux gérer les données GET et permettre des appels externes par un trigger ( on ne sait jamais).
On notera que lorsqu'on appelle l'url du serveur par le crontab du dit-serveur, il se reconnaît lui-même et fait un appel type localhost.
Sauf que des fois, un script peut durer longtemps et wget contient un timeout par défaut de 900 secondes, soit 15 minutes. Donc le script continuera, car non-terminé, wget dit qu'il n'a pas eu de réponse à temps et relancera l'appel. Il fait cela par défaut au moins... 20 fois.
Pour éviter cette mésaventure, il existe le paramètre -t conditionnant le nombre de tentatives de wget.
Il suffit de le passer à 1 et le souci est réglé.
Exemple : 00 21 * * * wget http://exemple.fr/sync.php -t 1