Laravel Scheduler

Mit Hilfe des Schedulers können Tasks gezielt geplant und unabhängig von Benutzeraktivitäten innerhalb von Laravel ausgeführt werden. Wie der Scheduler verwendet wird, erfahren Sie in diesem Artikel.

Grundsätzlich werden bei Laravel Funktionen nur ausgeführt, wenn Benutzer diese auslösen. Wenn wir allerdings Tasks haben, die regelmäßig zu bestimmten Zeiten ausgeführt werden, müssen wir den Scheduler verwenden.

Die Grundfunktion hinter dem Scheduler ist ein Cronjob, der jede einzelne Minute ausgeführt wird. Der Cronjob ruf dann wiederum über Artisan den Scheduler auf.

Editierung des Crontabs

sudo su
crontab -e

Der Crontab wird standartmäßig mit dem Endgegner vi geöffnet. Mit der Bild-runter Taste gehen wir hier zur letzten Zeile, drücken i für insert und fügen die folgende Zeile ein.

* * * * * /usr/bin/php7.4 /var/www/insight/artisan schedule:run > /dev/null 2>&1

(Die Pfade für die PHP-Executeable und Artisan müssen natürlich angepasst werden)

Erstellung der Commands

Zum ausführen der Einzelnen Tasks werden Commands verwendet. Diese können wie gewohnt mit Artisan erstellt werden.

php artisan make:command <command:name>

Der neue Command kann im Ordner /app/Console/Commands gefunden werden.

Wichtig hierbei ist die Signatur des Commands (im Bild Zeile 24). Diese wird verwendet, um den Command über den Scheduler oder die Konsole aufzurufen.

Was genau der Command ausführen soll, wird in der handle() Funktion definiert. Kleinere Funktionen können direkt innerhalb des Commandos definiert werden. Dazu kann man wie im Screenshot regulär Models und Helpers importieren und verwenden. Bei umfangreicheren Abläufen oder benötigten Hilfsfunktionen sollte man die Funktionalität direkt in den dazugehörigen Controller auslagern:

Auch für das Debuggen ist es hilfreich, die Funktionen im Controller zu haben, um diese dann per API via Postman zu testen. Der direkte Aufruf der Commands führt zu keinen Fehlermeldungen in der Console.

Konfiguration Scheduler

Die Konfigurationsdatei des Schedulers ist unter app/Console/Kernel.php zu finden. Hier müssen die Commands hinterlegt werden, um sie dann auszuführen:

In der Funktion schedule können wir anschließen unsere Commands mit Häufigkeit der Aufrufe hinterlegen:

Schedules können in den Unterschiedlichsten Konstellationen getriggert werden, eine Umfangreiche Liste der Modifiers kann in der offiziellen Dokumentation gefunden werden.

Sollten Sie noch Fragen haben oder eine Beratung wünschen, können Sie gerne mit uns Kontakt aufnehmen oder unsere Webseite besuchen.

Gerne können Sie hier auch andere Artikel zum Thema Laravel anschauen.