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!