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

แนวคิดคิวและไดรเวอร์

ทำความเข้าใจการประมวลผลแบบอะซิงก์และกำหนดค่าไดรเวอร์คิวของฐานข้อมูลหรือ Redis

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

คิวคืออะไร

คิว ช่วยเลื่อนงานที่ใช้เวลานานหรือใช้ทรัพยากรมาก (การส่งอีเมล การปรับขนาดรูปภาพ การเรียกใช้ API ภายนอก) ไปให้เวิร์กเกอร์เบื้องหลังทำงาน ทำให้การตอบกลับ HTTP รวดเร็ว

สถาปัตยกรรมคิว

กระบวนการหลัก (เซิร์ฟเวอร์เว็บ) จะส่งงานเข้าไปในคิว ส่วนกระบวนการเวิร์กเกอร์ที่แยกต่างหากจะดึงและดำเนินงานแบบไม่พร้อมกัน

ไดรเวอร์คิวที่พร้อมใช้งาน

Laravel รองรับระบบจัดเก็บคิวหลายรูปแบบ:

  • database — จัดเก็บงานในฐานข้อมูล (เหมาะสำหรับเริ่มต้น)
  • redis — รวดเร็ว พร้อมใช้งานจริง
  • sqs — AWS Simple Queue Service
  • beanstalkd — รวดเร็วและใช้ทรัพยากรน้อย
  • sync — ทำงานทันที (การพัฒนาในเครื่อง)

การกำหนดค่าไดรเวอร์คิว

ตั้งค่าไดรเวอร์ใน .env

# .env
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

การตั้งค่าไดรเวอร์ฐานข้อมูล

หากใช้ไดรเวอร์ฐานข้อมูล ให้สร้างตารางงาน

$ php artisan queue:table
$ php artisan migrate

การเริ่มเวิร์กเกอร์คิว

กระบวนการเวิร์กเกอร์จะดึงและดำเนินงานจากคิว

$ php artisan queue:work
# Or specify connection and queue:
$ php artisan queue:work redis --queue=emails,default

queue:listen กับ queue:work

queue:work จะโหลดแอปครั้งเดียวและประมวลผลงานในหน่วยความจำ ซึ่งเร็วกว่าแต่ต้องเริ่มเวิร์กเกอร์ใหม่หลังแก้ไขโค้ด ส่วน queue:listen จะโหลดแอปใหม่สำหรับแต่ละงาน จึงสะดวกกว่าสำหรับการพัฒนา

งานที่ล้มเหลว

เมื่อการดำเนินงานล้มเหลวหลังลองใหม่ครบทุกครั้ง งานนั้นจะถูกจัดเก็บในตาราง failed_jobs ดูรายละเอียดและลองใหม่ได้ด้วย Artisan

$ php artisan queue:failed
$ php artisan queue:retry all
$ php artisan queue:flush

ลำดับความสำคัญของคิว

กำหนดคิวที่มีชื่อหลายคิว และกำหนดลำดับความสำคัญเมื่อเริ่มเวิร์กเกอร์

$ php artisan queue:work --queue=high,default,low
# Worker checks high first, then default, then low

แดชบอร์ด Horizon

สำหรับคิว Redis, Laravel Horizon มีแดชบอร์ดแบบเรียลไทม์ที่สวยงาม ซึ่งแสดงปริมาณงาน งานที่ล้มเหลว และสถิติของเวิร์กเกอร์

การเลือกไดรเวอร์

ใช้ sync ในเครื่อง ใช้ database สำหรับโครงการขนาดเล็ก และใช้ redis สำหรับระบบจริงที่ต้องรองรับปริมาณมาก หลีกเลี่ยง SQS เว้นแต่คุณจะใช้งานอยู่บน AWS และต้องการการขยายขนาดแบบไม่จำกัด

สรุป

คิวถ่ายโอนงานที่ใช้เวลานานไปให้เวิร์กเกอร์เบื้องหลังทำงาน กำหนดค่าไดรเวอร์ใน .env สร้างงานด้วย Artisan และเริ่มเวิร์กเกอร์ด้วย queue:work ตรวจสอบงานที่ล้มเหลวในตาราง failed_jobs

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

ไดรเวอร์คิวใดที่ทำงานทันทีในกระบวนการเดียวกัน

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

บทเรียน “แนวคิดคิวและไดรเวอร์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “แนวคิดคิวและไดรเวอร์”

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

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

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

บทเรียน “แนวคิดคิวและไดรเวอร์” ใช้เวลานานแค่ไหน

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

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

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

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

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