Verwenden von Cron Schedule in Laravel zur Automatisierung von Aufgaben
Cron-Job ist nützlich, um unsere Aufgabe zum angegebenen Zeitpunkt in regelmäßigen Abständen zu automatisieren. Laravel wird mit einer Funktion zur Aufgabenplanung geliefert, die den Cron-Zeitplan super einfach macht. In der Vergangenheit mussten wir für jeden Cron-Job einen separaten Eintrag hinzufügen. In Laravel müssen wir nur einen Befehl hinzufügen und alle unsere Cron-Jobs werden automatisch ausgeführt. Es ist nicht erforderlich, für jede Aufgabe einen separaten Eintrag hinzuzufügen. In diesem Artikel untersuchen wir die Verwendung von Cron-Zeitplänen in Laravel, die uns helfen, unsere Aufgaben zu automatisieren.
Warum müssen wir Cron ausführen?
Es gibt mehrere Beispiele, die wir erwähnen können, wo wir einen Cron ausführen müssen. Möglicherweise betreiben Sie einen Online-Shop und möchten Ihren Benutzern Werbeangebote senden. Oder Sie haben eine Mitgliedschafts-Website und müssen den Benutzern die Erinnerungs-E-Mail über den Verlängerungszeitraum des Abonnements senden. Dies sind die beiden Beispiele, in denen wir den Cron verwenden können. Was wir tun, ist, ein Programm zu schreiben, das diese Aufgabe ausführen kann, und einen Cron dafür zu setzen. Ihr Server sucht nach der für cron angegebenen Zeit und führt das Programm automatisch aus, wenn diese Zeit erreicht ist. Wir müssen nicht auf die Uhr schauen und das Programm manuell ausführen.
Dieser Prozess macht unser Leben einfach. Wir können uns auf unsere anderen wichtigen Dinge konzentrieren und Zeit in eine kluge Sache investieren.
Cron-Zeitplan in Laravel
Nehmen wir für unseren Artikel ein Beispiel aus der Praxis. Nehmen wir an, wir haben eine Reihe von Benutzern in unserer Laravel-Datenbank. Jeden Mitternacht müssen wir eine E-Mail an alle Benutzer senden, in denen unser neues Werbeangebot beschrieben wird. Dadurch werden unsere Benutzer über neue Angebote informiert und Ihre Verkäufe können mehr Aufmerksamkeit erhalten.
Wir gehen davon aus, dass Sie alle Ihre Benutzerinformationen in der Tabelle ‘Benutzer’ gespeichert haben. Wir erhalten die E-Mails der Benutzer aus dieser Tabelle und senden ihnen eine E-Mail. Natürlich müssen wir einen Code schreiben, der jede Mitternacht ausgeführt werden soll.
Öffnen Sie die app/Console/Kernel.php
Datei in Ihrem Editor und fügen Sie das Benutzermodell und die Mail-Fassade zur Datei hinzu.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
-Klasse hat eine Methode, schedule
bei der wir einen oder mehrere Zeitpläne schreiben müssen. Da wir unseren Benutzern eine E-Mail senden müssen, schreiben wir den Code wie folgt.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser;
use Mail;
class Kernel extends ConsoleKernel
{
....
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$arr_users = User::all();
if(count($arr_users) > 0) {
foreach ($arr_users as $user) {
$name = $user->name;
$email = $user->email;
$data = array("name" => $name, "body" => "This is our new promotional offer");
Mail::send('emails.mail', $data, function($message) use ($name, $email) {
$message->to($email, $name)
->subject('New Offer Launched');
$message->from('[email protected]', 'Artisans Web');
});
}
}
})->daily();
// tou can add more schedules here
}
....
Im obigen Code nehmen wir Benutzer aus der Datenbank und senden ihnen eine E-Mail mit der Sendemethode der Mail-Fassade. Hier müssen wir eine mail.blade.php
Datei unter dem resources/views/emails
Verzeichnis erstellen .
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Da unsere Aufgabe darin besteht, um Mitternacht eine E-Mail zu senden, haben wir die daily()
Methode verwendet. Laravel bietet verschiedene Zeitplanfrequenzoptionen, die Sie auf der Dokumentationsseite erhalten.
Cron-Eintrag zu Ihrem Server hinzufügen
Schließlich, um diesen Cron-Job auf einem Server zu setzen, sollten Sie unten den Cron-Eintrag zu Ihrem Server hinzufügen.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Stellen Sie sicher, dass Sie den Pfad Ihres Projekts richtig eingestellt haben. Dieser Cron ruft den Laravel-Befehlsplaner jede Minute auf. Es führt automatisch den Befehl schedule:run aus und wertet Ihre geplanten Aufgaben aus und führt die fälligen Aufgaben aus.
Wir hoffen, dass Sie vielleicht gelernt haben, wie Sie Cron-Zeitplan in Laravel verwenden und Ihre Aufgaben automatisieren. Wir würden gerne Ihre Meinung im Kommentarbereich unten hören.
Zum Thema passende Artikel
- Senden von E-Mails über den Gmail-SMTP-Server in Laravel
- So verwenden Sie Laravel-Ereignisse und -Listener in Ihrer Anwendung
- So verwenden Sie Laravel Passport für die REST-API-Authentifizierung