PHP Academy · Pelajaran

Membuat dan Mengirimkan Job

Buat class job dengan Artisan dan kirimkan dari controller.

Pelajaran 2 dari 413 langkah

Membuat dan Mengirimkan Job adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Apa Itu Tugas

Tugas adalah kelas PHP yang merangkum satu unit pekerjaan dalam antrean. Setiap tugas menerapkan handle(), yang dipanggil oleh pekerja antrean untuk menjalankan pekerjaan tersebut.

Membuat Tugas

Gunakan Artisan untuk membuat kelas tugas. Opsi --queue membuatnya dapat dimasukkan ke antrean (secara bawaan).

$ php artisan make:job SendWelcomeEmail

Struktur Kelas Tugas

Tugas memiliki metode handle() dan dapat menerima data melalui konstruktornya.

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

Mengirim Tugas

Kirim tugas dari mana saja di 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 Pengiriman

Anda juga dapat menggunakan pembantu global dispatch().

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

onQueue()

Tentukan antrean bernama tertentu saat mengirim tugas.

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

onConnection()

Tentukan koneksi antrean tertentu (misalnya, SQS untuk satu tugas dan Redis untuk tugas lainnya).

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

Serialisasi Model

Sifat SerializesModels memastikan model Eloquent yang diteruskan ke tugas diserialisasikan berdasarkan ID dan diambil ulang dari basis data oleh pekerja — sehingga data usang dapat dihindari.

afterResponse()

Kirim tugas setelah respons HTTP dikirim kepada pengguna — pengguna tidak perlu menunggu biaya tambahan pengiriman.

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

Menguji Tugas

Gunakan Queue::fake() dalam pengujian untuk memastikan tugas dikirim tanpa benar-benar menjalankannya.

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

Tugas Unik

Terapkan ShouldBeUnique untuk mencegah tugas duplikat dengan data yang sama menumpuk di antrean.

Ringkasan

Buat tugas dengan Artisan. Terapkan ShouldQueue dan handle(). Kirim dengan ::dispatch(). Tentukan antrean dengan onQueue(). Uji dengan Queue::fake().

Pemeriksaan Singkat

Antarmuka mana yang membuat kelas tugas dapat dimasukkan ke antrean?

Gratis untuk memulai

Belajar PHP dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
49
Pelajaran
195

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membuat dan Mengirimkan Job” gratis?

Ya — teks lengkap “Membuat dan Mengirimkan Job” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membuat dan Mengirimkan Job”?

Buat class job dengan Artisan dan kirimkan dari controller. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Membuat dan Mengirimkan Job” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Konsep Antrean dan Driver
  2. Membuat dan Mengirimkan Job
  3. Percobaan Ulang, Penundaan, dan Perantaian Job
  4. Memantau Antrean dengan Laravel Horizon
← Kembali ke PHP Academy