Heim  >  Artikel  >  PHP-Framework  >  Laravel Cron hat die Aufgabe „Sprunggrube' geplant

Laravel Cron hat die Aufgabe „Sprunggrube' geplant

藏色散人
藏色散人nach vorne
2019-11-15 14:04:523333Durchsuche

Das Ausführen geplanter Aufgaben in Laravel wird über Cron implementiert. Das offizielle Website-Dokument besteht aus einem einfachen Satz + einer Zeile Cron-Code

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

Aber im tatsächlichen Verwendungsprozess, wenn Sie mit Linux und Cron nicht vertraut sind , auf die Sie stoßen werden Wir haben einige kleine Fallstricke zusammengestellt und aufgezeichnet und sie in der Hoffnung geteilt, dass sie allen helfen können.

Pit 1: Umgebungsvariablen

Wenn Cron nicht wirksam wird, kann dies an falschen Cron-Ausführungsumgebungsvariablen liegen.

Führen Sie den Befehl

env > /tmp/env.output

aus, um die Datei /tmp/env.output zu öffnen und die gesamte Zeile des PATH-Felds am Anfang der Corntab-Datei hinzuzufügen. Die Corntab-Datei befindet sich in /. var/spool/cron-Verzeichnis

Crontab-Dateibeispiel

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: Cron-Ausführungsbenutzer führt dazu, dass das Laravel-Protokoll nicht beschreibbar ist

Der durch erstellte Cron Der Befehl crontab -e gehört dem Root-Benutzer. Wenn die Aufgabe während der Ausführung aktiv Protokolle schreibt oder auf Ausnahmen stößt, die nicht abgefangen werden, wird eine Protokolldatei mit Root-Berechtigungen erstellt, die schließlich zum WWW-Konto von PHP führt -fpm, um nicht schreiben zu können.

Daher müssen Sie beim Erstellen von Cron den Benutzer angeben

crontab -u www -e

In persönlich verwalteten Systemen ist der PHP-FPM-Ausführungsbenutzer www. Bitte passen Sie den Code entsprechend Ihrer tatsächlichen Situation an.

Pit 3: Die letzte Zeile des Cron-Inhalts wird nicht eingegeben

Wenn Sie nach der Lösung der beiden oben genannten Probleme immer noch feststellen, dass Cron nicht ausgeführt wird, bestätigen Sie bitte

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

Am Ende des Codes gibt es einen Wagenrücklauf und einen Zeilenvorschub.

Diese Falle beschäftigte den Ingenieur den ganzen Nachmittag...

Das obige ist der detaillierte Inhalt vonLaravel Cron hat die Aufgabe „Sprunggrube' geplant. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen