PHP Academy · Pelajaran

Mencipta dan Menghantar Tugas

Jana kelas tugas dengan Artisan dan hantar tugas itu daripada pengawal.

Pelajaran 2 daripada 413 langkah

Mencipta dan Menghantar Tugas ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah Tugas?

Tugas ialah kelas PHP yang merangkum satu unit kerja yang dimasukkan ke baris gilir. Setiap tugas melaksanakan handle(), yang dipanggil oleh pekerja baris gilir untuk melaksanakan tugas tersebut.

Menjana Tugas

Gunakan Artisan untuk mencipta kelas tugas. Bendera --queue menjadikannya boleh dimasukkan ke baris gilir (lalai).

$ php artisan make:job SendWelcomeEmail

Struktur Kelas Tugas

Satu tugas mempunyai kaedah handle() dan boleh menerima data melalui pembinanya.

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

Menghantar Tugas

Hantar tugas dari mana-mana tempat dalam aplikasi anda.

<?php
// Dispatch to queue:
SendWelcomeEmail::dispatch($user);

// Dispatch with delay:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));

// Dispatch synchronously (bypass queue):
SendWelcomeEmail::dispatchSync($user);

Pembantu Penghantaran

Anda juga boleh menggunakan pembantu global dispatch().

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

onQueue()

Sasarkan baris gilir bernama tertentu semasa menghantar tugas.

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

onConnection()

Sasarkan sambungan baris gilir tertentu (contohnya SQS untuk satu tugas dan Redis untuk tugas lain).

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

Menyiriakan Model

Trait SerializesModels memastikan model Eloquent yang dihantar kepada tugas disiriakan mengikut ID dan diambil semula daripada pangkalan data oleh pekerja — sekali gus mengelakkan data lapuk.

afterResponse()

Hantar tugas selepas respons HTTP dihantar kepada pengguna — pengguna tidak perlu menunggu overhed penghantaran.

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

Menguji Tugas

Gunakan Queue::fake() dalam ujian untuk mengesahkan bahawa tugas dihantar tanpa benar-benar menjalankannya.

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

Tugas Unik

Laksanakan ShouldBeUnique untuk menghalang tugas pendua bagi data yang sama daripada terkumpul dalam baris gilir.

Ringkasan

Jana tugas dengan Artisan. Laksanakan ShouldQueue dan handle(). Hantar dengan ::dispatch(). Sasarkan baris gilir dengan onQueue(). Uji dengan Queue::fake().

Semakan Pantas

Antara muka manakah yang menjadikan kelas tugas boleh dimasukkan ke baris gilir?

Percuma untuk bermula

Pelajari PHP dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
49
Pelajaran
195

Soalan Lazim

Adakah pelajaran “Mencipta dan Menghantar Tugas” percuma?

Ya — teks penuh “Mencipta dan Menghantar Tugas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mencipta dan Menghantar Tugas”?

Jana kelas tugas dengan Artisan dan hantar tugas itu daripada pengawal. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mencipta dan Menghantar Tugas” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Konsep Baris Gilir dan Pemacu
  2. Mencipta dan Menghantar Tugas
  3. Percubaan Semula, Kelewatan dan Rantaian Tugas
  4. Memantau Baris Gilir dengan Laravel Horizon
← Kembali ke PHP Academy