PHP Academy · Oppitunti

Jobien luominen ja lähettäminen

Luokaa job-luokka Artisanilla ja lähettäkää se ohjaimista.

Oppitunti 2/413 vaihetta

Jobien luominen ja lähettäminen on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Mikä Job on?

Job on PHP-luokka, joka kapseloi yhden jonotettavan työyksikön. Jokainen job toteuttaa handle()-metodin, jota jonotyöntekijä kutsuu tehtävän suorittamiseksi.

Jobin luominen

Luokaa job-luokka Artisanilla. --queue-valitsin tekee siitä jonotettavan (oletus).

$ php artisan make:job SendWelcomeEmail

Job-luokan rakenne

Jobilla on handle()-metodi, ja se voi vastaanottaa tietoja konstruktorinsa kautta.

<?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));
    }
}

Jobin lähettäminen jonoon

Lähettäkää job mistä tahansa sovelluksen osasta.

<?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-apufunktiot

Voitte käyttää myös yleistä dispatch()-apufunktiota.

<?php
dispatch(new SendWelcomeEmail($user))
    ->onQueue("emails")
    ->delay(now()->addHour());

onQueue()

Kohdistakaa job tiettyyn nimettyyn jonoon sitä lähettäessänne.

<?php
SendWelcomeEmail::dispatch($user)->onQueue("emails");

onConnection()

Kohdistakaa job tiettyyn jonoyhteyteen, esimerkiksi SQS:ään yhden jobin ja Redisiin toisen jobin osalta.

<?php
SendWelcomeEmail::dispatch($user)->onConnection("sqs");

Mallien sarjallistaminen

SerializesModels-trait varmistaa, että jobille välitetyt Eloquent-mallit sarjallistetaan tunnisteen perusteella ja haetaan uudelleen tietokannasta työntekijän toimesta — näin vältetään vanhentuneet tiedot.

afterResponse()

Lähettäkää job sen jälkeen, kun HTTP-vastaus on lähetetty käyttäjälle — käyttäjän ei tarvitse odottaa lähettämisestä aiheutuvaa viivettä.

<?php
App::terminating(fn () => SendWelcomeEmail::dispatch($user));

Jobien testaaminen

Käyttäkää testeissä Queue::fake()-metodia varmistaaksenne, että jobit lähetetään jonoon suorittamatta niitä oikeasti.

<?php
Queue::fake();
$this->post("/register", $data);
Queue::assertPushed(SendWelcomeEmail::class);

Yksilölliset jobit

Toteuttakaa ShouldBeUnique, jotta samaa dataa käsittelevät päällekkäiset jobit eivät kasaannu jonoon.

Yhteenveto

Luokaa jobit Artisanilla. Toteuttakaa ShouldQueue ja handle(). Lähettäkää jobit jonoon komennolla ::dispatch(). Kohdistakaa ne jonoihin komennolla onQueue(). Testatkaa ne komennolla Queue::fake().

Pikakysymys

Mikä rajapinta tekee job-luokasta jonotettavan?

Aloita maksutta

Opi PHP tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
49
Oppitunnit
195

Usein kysytyt kysymykset

Onko oppitunti ”Jobien luominen ja lähettäminen” ilmainen?

Kyllä – oppitunnin ”Jobien luominen ja lähettäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Jobien luominen ja lähettäminen”?

Luokaa job-luokka Artisanilla ja lähettäkää se ohjaimista. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Jobien luominen ja lähettäminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?

Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Jonojen käsitteet ja ajurit
  2. Jobien luominen ja lähettäminen
  3. Jobien uudelleenyritykset, viiveet ja ketjutus
  4. Jonojen valvonta Laravel Horizonilla
← Takaisin: PHP Academy