Jobs erstellen und auslösen
Generieren Sie mit Artisan eine Job-Klasse und lösen Sie sie aus Controllern aus.
Jobs erstellen und auslösen ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Job?
Ein Job ist eine PHP-Klasse, die eine einzelne Einheit von Queue-Arbeit kapselt. Jeder Job implementiert handle(), das der Queue-Worker aufruft, um die Aufgabe auszuführen.
Einen Job generieren
Verwenden Sie Artisan, um eine Jobklasse zu erstellen. Das Flag --queue macht sie queue-fähig (Standard).
$ php artisan make:job SendWelcomeEmailStruktur einer Jobklasse
Ein Job verfügt über eine Methode handle() und kann über seinen Konstruktor Daten empfangen.
<?php
namespace App\Jobs;
use App\Models\User;
use App\Mail\WelcomeEmail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\SerializesModels;
class SendWelcomeEmail implements ShouldQueue
{
use Dispatchable, Queueable, SerializesModels;
public function __construct(private User $user) {}
public function handle(): void
{
Mail::to($this->user)->send(new WelcomeEmail($this->user));
}
}Einen Job dispatchen
Dispatchen Sie den Job von jeder beliebigen Stelle Ihrer Anwendung aus.
<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);
// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);Dispatch-Hilfsfunktionen
Sie können auch den globalen Helfer dispatch() verwenden.
<?php
dispatch(new SendWelcomeEmail($user))
->onQueue("emails")
->delay(now()->addHour());onQueue()
Wählen Sie beim Dispatching eine bestimmte benannte Queue aus.
<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");onConnection()
Wählen Sie eine bestimmte Queue-Verbindung aus (z. B. SQS für einen Job und Redis für einen anderen).
<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");Modelle serialisieren
Das Trait SerializesModels stellt sicher, dass an den Job übergebene Eloquent-Modelle anhand ihrer ID serialisiert und vom Worker erneut aus der Datenbank abgerufen werden — dadurch werden veraltete Daten vermieden.
afterResponse()
Dispatchen Sie einen Job, nachdem die HTTP-Response an den Benutzer gesendet wurde — der Benutzer muss nicht auf den Dispatch-Aufwand warten.
<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));Jobs testen
Verwenden Sie in Tests Queue::fake(), um zu überprüfen, dass Jobs dispatcht werden, ohne sie tatsächlich auszuführen.
<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);Eindeutige Jobs
Implementieren Sie ShouldBeUnique, damit sich doppelte Jobs für dieselben Daten nicht in der Queue ansammeln.
Zusammenfassung
Generieren Sie Jobs mit Artisan. Implementieren Sie ShouldQueue und handle(). Dispatchen Sie sie mit ::dispatch(). Wählen Sie Queues mit onQueue() aus. Testen Sie mit Queue::fake().
Schnelltest
Welche Schnittstelle macht eine Jobklasse queue-fähig?
Häufig gestellte Fragen
Ist die Lektion „Jobs erstellen und auslösen“ kostenlos?
Ja — der vollständige Text von „Jobs erstellen und auslösen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Jobs erstellen und auslösen“?
Generieren Sie mit Artisan eine Job-Klasse und lösen Sie sie aus Controllern aus. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Jobs erstellen und auslösen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Konzepte und Treiber von Queues
- Jobs erstellen und auslösen
- Job-Wiederholungen, Verzögerungen und Verkettung
- Queues mit Laravel Horizon überwachen