Heim > Artikel > PHP-Framework > Laravel Cron hat die Aufgabe „Sprunggrube' geplant
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!