Jobien luominen ja lähettäminen
Luokaa job-luokka Artisanilla ja lähettäkää se ohjaimista.
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 SendWelcomeEmailJob-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?
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
- Jonojen käsitteet ja ajurit
- Jobien luominen ja lähettäminen
- Jobien uudelleenyritykset, viiveet ja ketjutus
- Jonojen valvonta Laravel Horizonilla