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

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

藏色散人
Libérer: 2019-11-15 14:04:52
avant
3366 Les gens l'ont consulté

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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal