„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erstelle ich eine geplante Aufgabe in Laravel?

Wie erstelle ich eine geplante Aufgabe in Laravel?

Veröffentlicht am 03.11.2024
Durchsuche:776

Hallo zusammen! Heute werde ich Sie durch den Prozess der Erstellung einer geplanten Aufgabe in Laravel führen. Wir nehmen das Beispiel des Versendens einer täglichen Marketing-E-Mail an Benutzer.

Schritt 1: Erstellen Sie die E-Mail-Klasse

Erstellen wir zunächst eine neue Mailable-Klasse mit dem folgenden Artisan-Befehl:

php artisan make:mail DailyMarketingEmail --view

Dieser Befehl generiert eine neue Mailable-Klasse im App/Mail-Verzeichnis sowie eine entsprechende Ansichtsdatei, daily-marketing-email.blade.php, im Verzeichnis resources/views/mail/. Sie können den Inhalt der E-Mail in dieser Ansichtsdatei anpassen.

Schritt 2: Erstellen Sie einen Artisan-Befehl

Als nächstes erstellen wir einen Artisan-Befehl, der das Versenden unserer DailyMarketingEmail übernimmt. Führen Sie den folgenden Befehl aus:

php artisan make:command SendDailyMarketingEmail

Dieser Befehl generiert eine neue Befehlsklasse im Verzeichnis app/Console/Commands.

Schritt 3: Verstehen Sie die Befehlsstruktur

Nachdem Sie Ihren Befehl generiert haben, sehen Sie zwei Schlüsseleigenschaften in der generierten Klasse:

protected $signature: Dies definiert den Namen und die Signatur Ihres Artisan-Befehls.
protected $description: Dies stellt eine Beschreibung Ihres Befehls bereit.
Mit der Handle-Methode in dieser Klasse definieren Sie die Logik Ihres Befehls.

Nachdem alles eingerichtet ist, können Sie alle Ihre Artisan-Befehle auflisten, indem Sie Folgendes ausführen:

php-Handwerker

Sie sollten Ihren Befehl in der Liste sehen:

How to create a scheduled Task in Laravel ?

Schritt 4: Implementieren Sie die Befehlslogik

Lassen Sie uns nun die Logik innerhalb der Handle-Methode zum Versenden der Marketing-E-Mails definieren:

each(function ($user) {
            Mail::to($user->email)->send(new DailyMarketingEmail);
        });

    }
}

Bei der Handle-Methode rufen wir alle Benutzer aus der Datenbank ab und senden jedem einzelnen die DailyMarketingEmail.

Schritt 5: Testen des Befehls

Sie können Ihren Befehl manuell testen, indem Sie Folgendes ausführen:

php artisan app:send-daily-marketing-emails

Erwägen Sie die Verwendung von Tools wie Mailtrap oder MailHog, um die gesendeten E-Mails während des Tests abzufangen und anzuzeigen.

Schritt 6: Planen Sie den Befehl

Um schließlich den täglichen Versand dieser E-Mail zu automatisieren, müssen wir den Befehl in der Schedule-Methode der Datei Kernel.php im Verzeichnis app/Console/ einplanen:

command('app:send-daily-marketing-emails')->dailyAt('08:30'); 
    }

    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

Hier verwenden wir die Methode dailyAt('08:30'), um die Ausführung des Befehls jeden Tag um 08:30 Uhr zu planen. Sie können die Zeit nach Bedarf anpassen.

Zusätzliche Vorschläge:

  1. E-Mails in die Warteschlange stellen: Für eine große Anzahl von Benutzern empfiehlt es sich, die E-Mails in die Warteschlange zu stellen, anstatt sie alle auf einmal zu senden. Dies kann durch die Implementierung der ShouldQueue-Schnittstelle in der Mailable-Klasse erreicht werden.

  2. Überlegungen zur Leistung: Erwägen Sie bei großen Benutzergruppen die Optimierung von Datenbankabfragen und dem E-Mail-Versandprozess, um eine effiziente Leistung sicherzustellen.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/kepsondiaz/how-to-create-a-scheduled-task-in-laravel--54a0?1 Bei Verstößen wenden Sie sich bitte an [email protected] lösche es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3