Laravel ist ein beliebtes PHP-Framework, das viele verfügbare Komponenten und Tools bereitstellt, einschließlich der Aufgabenplanung. In diesem Artikel erfahren Sie, wie Sie die Aufgabenplanung in Laravel-Anwendungen verwenden.
Was ist Aufgabenplanung?
Aufgabenplanung bezieht sich auf die Technologie zur planmäßigen Ausführung bestimmter Aufgaben. Sichern Sie beispielsweise stündlich Ihre Datenbank oder senden Sie täglich Berichte. In Laravel ähnelt die Aufgabenplanung der von Cron Tabs, ist jedoch einfacher zu implementieren und zu verwalten.
Der Aufgabenplaner in Laravel verwendet Artisan-Befehlszeilentools zur Verwaltung der Planung, einschließlich CRON-Sockets und Powershell.
Sehen wir uns an, wie man die Aufgabenplanung in Laravel implementiert.
Der erste Schritt – Erstellen einer Aufgabe
Das Erstellen einer Aufgabe ist der erste Schritt zur Implementierung der Aufgabenplanung. Planungsaufgaben in Laravel werden in Form von Klassen dargestellt. Das Konvertieren von Aufgaben in Klassen ermöglicht eine bessere Verwaltung und Prüfung, indem die auszuführende Logik definiert wird. Lassen Sie uns eine Beispielaufgabe TutorialTask
erstellen: TutorialTask
:
<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class TutorialTask implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Execute the job. * * @return void */ public function handle() { // Your logic to execute every minute. \Log::info('Task executed at '.now()); } }
这个任务逻辑很简单,每分钟记录一条信息到日志中。现在,我们已经创建了一个任务,但它不会自动执行。我们需要为它设置调度。
第二步——在控制台中设置调度
Laravel提供了许多可以将任务添加到调度中的方法。在这里,我们使用schedule
方法在控制台中设置调度。
$schedule->job(new TutorialTask)->everyMinute();
everyMinute
方法表示这个任务每分钟都会执行。您可以使用其他预定义的方法,如每小时(hourly
)、每天(daily
)、每月(monthly
)或每周(weekly
)。
或者,您可以定义我们自己的频率规则:
$schedule->job(new TutorialTask)->everyFiveMinutes();
这个规则指定任务应该每五分钟运行一次。
第三步——启动任务调度器
现在我们已经为任务设置了调度,接下来我们需要启动任务调度器。我们可以在服务器上运行调度器,也可以使用Laravel自带的计划调度器,它是通过设置Cron Tab来运行的。
在控制台中运行以下命令:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这个命令将每分钟运行一次Laravel的调度器。您需要将/path-to-your-project
替换为您的Laravel应用程序的路径。>> /dev/null
指示将所有输出转发到/dev/null
中。
最后一步——启动队列(如果需要)
如果您的应用程序使用队列,则需要启用队列调度器。Laravel使用Redis或Beanstalkd等后端驱动程序来处理队列任务。您需要按照以下步骤启用队列调度器:
在.env
文件中定义QUEUE_DRIVER
:
QUEUE_DRIVER=redis
在config/queue.php
中设置队列连接:
'default' => env('QUEUE_DRIVER', 'redis'), 'connections' => [ ..... 'redis' => [ 'driver' => 'redis', 'connection' => 'your-default-redis-connection', 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, ], ..... ]
修改.env
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 REDIS_QUEUE=default
Laravel bietet viele Methoden zum Hinzufügen von Aufgaben zum Zeitplan. Hier verwenden wir die Methode schedule
, um den Zeitplan in der Konsole festzulegen. Die Methode
php artisan queue:work redis --daemon
everyMinute
bedeutet, dass diese Aufgabe jede Minute ausgeführt wird. Sie können andere vordefinierte Methoden wie stündlich (hourly
), täglich (daily
), monatlich (monthly
) oder wöchentlich (weekly) verwenden
).
/path-to-your-project
durch den Pfad zu Ihrer Laravel-Anwendung ersetzen. >> /dev/null
leitet die gesamte Ausgabe an /dev/null
weiter. 🎜🎜Letzter Schritt – Warteschlange starten (falls erforderlich) 🎜Wenn Ihre Anwendung Warteschlangen verwendet, müssen Sie den Warteschlangenplaner aktivieren. Laravel verwendet Backend-Treiber wie Redis oder Beanstalkd, um Warteschlangenaufgaben zu erledigen. Sie müssen diese Schritte ausführen, um den Warteschlangenplaner zu aktivieren: 🎜🎜 Definieren Sie QUEUE_DRIVER
in der Datei .env
: 🎜rrreee🎜In config/queue.php code> Legen Sie die Warteschlangenverbindung fest in: 🎜rrreee🎜Ändern Sie die Datei <code>.env
, um die Warteschlangenverbindung anzugeben: 🎜rrreee🎜Jetzt starten Sie den Warteschlangenplaner: 🎜rrreee🎜Dieser Befehl startet den Warteschlangenplaner und startet Aufgaben ausführen. 🎜🎜Fazit: 🎜Mit der Aufgabenplanungsfunktion in Laravel können Sie bei Bedarf Befehle ausführen, Programme ausführen oder E-Mails senden. Durch das Erstellen geplanter Aufgaben und das Hinzufügen dieser zur Aufgabenliste können Sie Aufgaben einfach verwalten und ausführen. Denken Sie während dieses Vorgangs daran, den Planer oder Warteschlangenplaner zu aktivieren, damit Aufgaben zu geplanten Zeiten oder in einer Prioritätswarteschlange ausgeführt werden. Viel Glück bei der Verwendung des Laravel-Aufgabenplaners zur Verbesserung der Leistung und Reaktionsfähigkeit Ihrer Anwendung. 🎜Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Aufgabenplanung in der Laravel-Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!