0Pricing
PHP Academy · บทเรียน

การสร้างและส่งงาน

สร้างคลาสงานด้วย Artisan และส่งงานจากคอนโทรลเลอร์

การสร้างและส่งงาน เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

งานคืออะไร

งาน คือคลาส PHP ที่ห่อหุ้มหน่วยงานหนึ่งของงานในคิว แต่ละงานนำ handle() ไปใช้งาน โดยเวิร์กเกอร์คิวจะเรียกใช้เมธอดนี้เพื่อดำเนินงาน

การสร้างงาน

ใช้ Artisan เพื่อสร้างคลาสงาน แฟล็ก --queue จะทำให้งานสามารถเข้าคิวได้ (เป็นค่าเริ่มต้น)

$ php artisan make:job SendWelcomeEmail

โครงสร้างคลาสงาน

งานมีเมธอด handle() และสามารถรับข้อมูลผ่านตัวสร้างได้

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

การส่งงานเข้าคิว

ส่งงานเข้าคิวจากที่ใดก็ได้ในแอปพลิเคชัน

<?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() ได้

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

onQueue()

ระบุคิวที่มีชื่อเฉพาะเมื่อส่งงานเข้าคิว

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

onConnection()

ระบุการเชื่อมต่อคิวเฉพาะ (เช่น SQS สำหรับงานหนึ่ง และ Redis สำหรับอีกงานหนึ่ง)

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

การทำให้โมเดลเป็นอนุกรม

คุณลักษณะ SerializesModels ช่วยให้มั่นใจว่าโมเดล Eloquent ที่ส่งให้กับงานจะถูกทำให้เป็นอนุกรมด้วย ID และถูกดึงใหม่จากฐานข้อมูลโดยเวิร์กเกอร์ เพื่อหลีกเลี่ยงข้อมูลเก่า

afterResponse()

ส่งงานเข้าคิวหลังจากส่งการตอบกลับ HTTP ให้ผู้ใช้แล้ว ผู้ใช้จึงไม่ต้องรอเวลาที่ใช้ในการส่งงานเข้าคิว

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

การทดสอบงาน

ใช้ Queue::fake() ในการทดสอบเพื่อยืนยันว่ามีการส่งงานเข้าคิว โดยไม่ต้องดำเนินงานจริง

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

งานแบบไม่ซ้ำ

นำ ShouldBeUnique ไปใช้งานเพื่อป้องกันไม่ให้งานสำหรับข้อมูลเดียวกันซ้ำกันสะสมอยู่ในคิว

สรุป

สร้างงานด้วย Artisan นำ ShouldQueue และ handle() ไปใช้งาน ส่งงานเข้าคิวด้วย ::dispatch() ระบุคิวด้วย onQueue() ทดสอบด้วย Queue::fake()

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ส่วนติดต่อใดที่ทำให้คลาสงานสามารถเข้าคิวได้

คำถามที่พบบ่อย

บทเรียน “การสร้างและส่งงาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างและส่งงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างและส่งงาน”

สร้างคลาสงานด้วย Artisan และส่งงานจากคอนโทรลเลอร์ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างและส่งงาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนวคิดคิวและไดรเวอร์
  2. การสร้างและส่งงาน
  3. การลองทำงานซ้ำ การหน่วงเวลา และการเชื่อมโยงงาน
  4. การตรวจสอบคิวด้วย Laravel Horizon
← กลับไปที่ PHP Academy