Aufgabenplanung durch Laravel: Sich wiederholende Aufgaben regelmäßig ausführen
Einführung:
Bei der Entwicklung von Webanwendungen gibt es einige sich wiederholende Aufgaben, die regelmäßig ausgeführt werden müssen. Zum Beispiel E-Mails versenden, Berichte erstellen, Datensicherung durchführen usw. Die manuelle Ausführung dieser Aufgaben von Zeit zu Zeit ist offensichtlich ineffizient und kann leicht übersehen werden. Laravel bietet eine leistungsstarke Aufgabenplanungsfunktion, die uns dabei helfen kann, diese Aufgaben automatisch zu geplanten Zeiten auszuführen und die Entwicklungseffizienz zu verbessern. In diesem Artikel wird erläutert, wie Sie Aufgaben über Laravel planen, um die geplante Ausführung sich wiederholender Aufgaben zu implementieren.
1. Aufgabenplaner
Laravel verwendet den Aufgabenplaner, um verschiedene Aufgaben zu verwalten und auszuführen. Der Aufgabenplaner verwendet CRON-Ausdrücke, um die Ausführungszeit von Aufgaben anzugeben. Ein CRON-Ausdruck ist ein Zeitausdruck, der Minuten, Stunden, Daten, Monate und Wochentage angeben kann. In Laravel können wir über Artisan-Befehle Aufgabenpläne erstellen, ändern und löschen.
2. Aufgabenplanung erstellen
Zuerst müssen wir eine Aufgabenplanungsklasse erstellen. In Laravel können Sie den Artisan-Befehl verwenden, um einen Aufgabenplaner zu erstellen:
php artisan make:command SendEmails
Der obige Befehl erstellt eine Datei mit dem Namen SendEmails.php
in app/Console/Commands
Verzeichnisdatei, die eine Klasse enthält, die von IlluminateConsoleCommand
erbt. app/Console/Commands
目录下创建一个名为SendEmails.php
的文件,该文件包含了一个继承自IlluminateConsoleCommand
的类。
三、定义任务调度
打开SendEmails.php
文件,在handle()
方法中添加任务的具体逻辑。例如,我们要发送一封邮件给所有用户,可以在handle()
方法中编写以下代码:
public function handle() { $users = User::all(); foreach ($users as $user) { // 发送邮件给$user } }
四、配置任务调度
打开app/Console/Kernel.php
文件,该文件包含了所有的任务调度配置。我们需要在schedule()
方法中配置任务调度。例如,我们想要每天的上午10点执行SendEmails
任务,可以在schedule()
方法中添加以下配置:
protected function schedule(Schedule $schedule) { $schedule->command('emails:send') ->dailyAt('10:00'); }
上述配置将会在每天的上午10点执行SendEmails
任务。
五、使用任务调度
我们可以使用php artisan schedule:run
命令来运行任务调度器,它会根据配置的时间表自动执行任务。该命令可以使用系统的定时任务工具,如CRON来定期调用。
在Linux系统中,可以使用以下命令配置CORN定时任务:
crontab -e
然后在打开的文本编辑器中添加以下内容:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
上述命令将会每分钟运行一次php artisan schedule:run
命令。
六、其他任务调度配置
除了通过CRON表达式来定期执行任务外,我们还可以通过其他方式配置任务调度,例如:
everyMinute()
方法来每分钟执行一次任务:$schedule->command('emails:send') ->everyMinute();
daily()
方法来每天定时执行任务,可以传入1到23之间的小时参数:$schedule->command('emails:send') ->daily(13);
weekdays()
SendEmails.php
und fügen Sie die spezifische Logik der Aufgabe in der Methode handle()
hinzu. Wenn wir beispielsweise eine E-Mail an alle Benutzer senden möchten, können wir den folgenden Code in die Methode handle()
schreiben: $schedule->command('emails:send') ->weekdays();
app/Console /Kernel.php
Datei, die alle Aufgabenplanungskonfigurationen enthält. Wir müssen die Aufgabenplanung in der Methode schedule()
konfigurieren. Wenn wir beispielsweise die Aufgabe SendEmails
jeden Tag um 10 Uhr ausführen möchten, können wir die folgende Konfiguration in der Methode schedule()
hinzufügen: rrreee
Die obige Konfiguration wird jeden Morgen ausgeführt. Führen Sie die AufgabeSendEmails
um 10 Uhr aus. 5. Aufgabenplanung verwendenphp artisan scheme:run
verwenden, um den Aufgabenplaner auszuführen, der Aufgaben automatisch gemäß dem konfigurierten Zeitplan ausführt. Dieser Befehl kann regelmäßig mit dem geplanten Task-Tool des Systems wie CRON aufgerufen werden. php artisan scheme:run
Befehl. 🎜🎜6. Andere Aufgabenplanungskonfigurationen🎜Zusätzlich zur regelmäßigen Ausführung von Aufgaben über CRON-Ausdrücke können wir die Aufgabenplanung auch auf andere Weise konfigurieren, wie zum Beispiel: 🎜🎜🎜Verwenden Sie zum Ausführen die Methode everyMinute()
Aufgaben jede Minute Führen Sie eine Aufgabe einmal aus: 🎜🎜rrreeedaily()
, um die Aufgabe regelmäßig jeden Tag auszuführen. Sie können den Stundenparameter zwischen 1 und 1 übergeben und 23: 🎜🎜rrreee🎜Verwenden Sie die Methode weekdays()
, um anzugeben, dass die Aufgabe nur an Werktagen ausgeführt wird: 🎜🎜rrreee🎜IV Zusammenfassung🎜Durch Mit der Aufgabenplanungsfunktion von Laravel können wir das Timing problemlos implementieren. Führen Sie sich wiederholende Aufgaben aus. Durch einfache Konfiguration können wir einige sich wiederholende Aufgaben problemlos regelmäßig ausführen und die Entwicklungseffizienz verbessern. In der tatsächlichen Entwicklung können wir den Taskplaner und andere Laravel-Funktionen kombinieren, um eine komplexere Taskplanungslogik zu implementieren. Ich hoffe, dieser Artikel ist hilfreich für Sie. 🎜🎜Durch die oben genannten Vorgänge können wir den Aufgabenplaner von Laravel problemlos verwenden, um wiederkehrende Aufgaben regelmäßig auszuführen. Ganz gleich, ob es sich um das Versenden von E-Mails, das Erstellen von Berichten oder die Datensicherung handelt, kann durch einfache Konfiguration eine automatische geplante Ausführung erreicht werden, um die Entwicklungseffizienz zu verbessern. Ich hoffe, dieser Artikel ist hilfreich für Sie! 🎜🎜Referenz: 🎜🎜🎜Laravel-Dokumentation: Aufgabenplanung, https://laravel.com/docs/8.x/scheduling🎜🎜Laravel-Dokumentation: Cron-Syntax, https://laravel.com/docs/8.x / Planung#cron-syntax🎜🎜Das obige ist der detaillierte Inhalt vonAufgabenplanung durch Laravel: Regelmäßige Ausführung wiederkehrender Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!