Maison  >  Article  >  cadre php  >  Point de tâche planifiée Laravel Cron "Jump Pit"

Point de tâche planifiée Laravel Cron "Jump Pit"

藏色散人
藏色散人avant
2019-11-15 14:04:523316parcourir

L'exécution des tâches planifiées dans Laravel est implémentée via cron. Le document du site officiel est une simple phrase + une ligne de code Cron

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Mais dans le processus d'utilisation réel, si vous n'êtes pas familier avec Linux et Cron. , vous rencontrerez Nous avons compilé et enregistré quelques petits pièges et les avons partagés dans l'espoir qu'ils puissent aider tout le monde.

Pit 1 : Variables d'environnement

Lorsque Cron ne prend pas effet, cela peut être dû à des variables d'environnement d'exécution incorrectes de Cron.

Exécutez la commande

env > /tmp/env.output

pour ouvrir le fichier /tmp/env.output et ajoutez la ligne entière du champ PATH en haut du fichier corntab. Le fichier corntab se trouve dans le /. Répertoire var/spool/cron

exemple de fichier crontab

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/opt/php7/bin:/opt/memcached/bin:/root/bin
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Pit 2 : l'utilisateur d'exécution de Cron rend le journal Laravel inscriptible

Le Cron créé via la commande crontab -e appartient à l'utilisateur root. Si elle est planifiée. Si la tâche écrit activement des journaux pendant l'exécution ou rencontre des exceptions qui ne sont pas interceptées, un fichier journal avec les autorisations root sera créé, ce qui entraînera éventuellement le compte www de php. -fpm pour ne pas pouvoir écrire.

Par conséquent, vous devez spécifier l'utilisateur lors de la création de cron

crontab -u www -e

Dans les systèmes gérés personnellement, l'utilisateur d'exécution de php-fpm est www. Veuillez ajuster le code en fonction de votre situation réelle.

Pit 3 : La dernière ligne du contenu cron n'entre pas

Après avoir résolu les deux problèmes ci-dessus, si vous constatez toujours que cron ne s'exécute pas, veuillez confirmer

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Il y a un retour chariot et un saut de ligne à la fin du code.

Cet écueil a troublé l'ingénieur tout l'après-midi...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer