Tworzenie i uruchamianie zadań
Generuj klasę zadania za pomocą Artisan i uruchamiaj ją z kontrolerów
Tworzenie i uruchamianie zadań to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Czym jest Job?
Job to klasa PHP, która enkapsuluje pojedynczą jednostkę pracy umieszczonej w kolejce. Każdy job implementuje handle(), wywoływaną przez workera kolejki w celu wykonania zadania.
Generowanie Job
Użyj Artisan, aby utworzyć klasę joba. Flaga --queue sprawia, że można go umieścić w kolejce (jest to ustawienie domyślne).
$ php artisan make:job SendWelcomeEmailStruktura klasy Job
Job ma metodę handle() i może otrzymywać dane za pośrednictwem konstruktora.
<?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));
}
}Dysponowanie Job
Uruchom job z dowolnego miejsca w aplikacji.
<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);
// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);Helpery dispatch
Możesz także użyć globalnego helpera dispatch().
<?php
dispatch(new SendWelcomeEmail($user))
->onQueue("emails")
->delay(now()->addHour());onQueue()
Podczas uruchamiania skieruj zadanie do konkretnej nazwanej kolejki.
<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");onConnection()
Skieruj zadanie do konkretnego połączenia kolejki (na przykład SQS dla jednego zadania i Redis dla innego).
<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");Serializowanie modeli
Trait SerializesModels zapewnia, że modele Eloquent przekazane do joba są serializowane na podstawie identyfikatora, a następnie ponownie pobierane z bazy danych przez workera — zapobiega to użyciu nieaktualnych danych.
afterResponse()
Uruchom job po wysłaniu odpowiedzi HTTP do użytkownika — użytkownik nie musi czekać na czas potrzebny do przekazania zadania.
<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));Testowanie Job
Użyj Queue::fake() w testach, aby sprawdzić, czy joby zostały uruchomione, bez faktycznego ich wykonywania.
<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);Unikatowe Joby
Zaimplementuj ShouldBeUnique, aby zapobiec gromadzeniu się w kolejce zduplikowanych jobów dotyczących tych samych danych.
Podsumowanie
Generuj joby za pomocą Artisan. Implementuj ShouldQueue i handle(). Uruchamiaj je za pomocą ::dispatch(). Kieruj je do kolejek za pomocą onQueue(). Testuj je za pomocą Queue::fake().
Szybkie sprawdzenie
Który interfejs sprawia, że klasę joba można umieścić w kolejce?
Często zadawane pytania
Czy lekcja „Tworzenie i uruchamianie zadań” jest bezpłatna?
Tak — pełny tekst „Tworzenie i uruchamianie zadań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tworzenie i uruchamianie zadań”?
Generuj klasę zadania za pomocą Artisan i uruchamiaj ją z kontrolerów Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Tworzenie i uruchamianie zadań”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Koncepcje kolejek i sterowniki
- Tworzenie i uruchamianie zadań
- Ponowienia, opóźnienia i łańcuchy zadań
- Monitorowanie kolejek za pomocą Laravel Horizon