0Pricing
PHP Academy · Lekcja

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 SendWelcomeEmail

Struktura 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

  1. Koncepcje kolejek i sterowniki
  2. Tworzenie i uruchamianie zadań
  3. Ponowienia, opóźnienia i łańcuchy zadań
  4. Monitorowanie kolejek za pomocą Laravel Horizon
← Powrót do PHP Academy