การสร้างและส่งงาน
สร้างคลาสงานด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนวคิดคิวและไดรเวอร์
- การสร้างและส่งงาน
- การลองทำงานซ้ำ การหน่วงเวลา และการเชื่อมโยงงาน
- การตรวจสอบคิวด้วย Laravel Horizon