Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Queue trong Laravel

3 Tháng Ba, 2022 by admin
Lượt xem: 65
Queue trong Laravel

Contents

  • 1. Queue là gì?
  • 2. Cài đặt Queue
  • 3. Sử dụng Queue
  • 4. Những thắc mắc
  • 5. Lưu ý
  • Kết Luận

1. Queue là gì?

Queue trong Laravel là hàng đợi, tức là những công việc mất quá nhiều thời gian để thực hiện thì sẽ cho nhưng công việc đó chạy ngầm dưới hệ thống, user sẽ nhận phản hồi ngay lập tức mà không phải chờ công việc đó hoàn thành. Kiểu đa luồng đó các bạn.

Lấy một ví dụ: bạn cho người dùng đăng ký tài khoản, sau khi đăng ký sẽ gửi mail chào mừng đến mail mà người dùng đăng ký, sau đó mới chuyển đến trang welcome. Như vậy nếu quá trình gửi mail bị lỗi thì sao, nếu thời gian gửi mail lên đến 2-3 phút thì sao, người dùng sẽ đợi load quá lâu. Vì thế với điều này chúng ta sẽ sử dụng queue, để khi đăng ký thì chuyển đến trang welcome luôn còn việc gửi mail sẽ cho vào hàng đợi.

Queue trong Laravel là gì

2. Cài đặt Queue

Mình cần cấu hình file env, bạn tìm QUEUE_CONNECTION và sửa giá trị lại thành database nhé.

Nhớ nhé mình từng mất nhiều thời gian tự hỏi tại sao nó chạy luôn mà không vào hàng đợi, không vào jobs table. Đây là nguyên nhân đó.

QUEUE_CONNECTION=database

Để sử dụng được Queue với database thì bạn cần phải tạo bảng job.

//tạo migration
php artisan queue:table

//dùng migration đã tạo để tạo bảng trong csdl
php artisan migrate

Tiếp theo bạn tạo cho mình job mới

php artisan make:job tenJobCuaBan

Khi đó bạn sẽ được một file App\Jobs\tenJobCuaBan.php việc của bạn là viết xử lý trong phương thức handle.

3. Sử dụng Queue

Ở nơi nào bạn muốn sử dụng thì bạn hãy khai báo nó trước.

use App\Jobs\tenJobCuaBan;

//ví dụ
use App\Jobs\NewJob;

Bạn muốn gọi job để xử lý.

NewJob::dispatch();

//hoặc
$this->dispatch(new NewJob);

Như vậy khi bạn gọi đến job NewJob này thì nó sẽ được ghi vào database hàng đợi (bảng Jobs) cho chúng ta. Và để thực thi các hàng đợi đó ta dùng lệnh

php artisan queue:work

4. Những thắc mắc

#queue
Chào tất cả anh chị và các bạn trong nhóm. Mình có một thắc mắc về queue trong laravel nhờ mọi người gỡ giúp ạ. Queue trong laravel sẽ lưu lại các jobs của mình và khi có sự can thiệp của mình tức là chạy lệnh php artisan queue:work thì công việc mới được thực hiện. Vậy có cách nào khi có job thì nó tự động làm mà mình không cần phải can thiệp vào không ạ?

Ví dụ như khi đăng ký thành công thì job gửi mail sẽ làm việc liền và người dùng sẽ lập tức chuyển đến trang welcome mà không phải chờ đợi khoảng thời gian gửi mail này ạ.

Cảm ơn mọi người.

Link: https://www.facebook.com/groups/vietnam.laravel/permalink/1268196550237034/

Sau đó mình nhận được các câu trả lời rất hay:

  1. Event
  2. Linux:
    Cronjob / Crontab
    Stask Chedule
    Supervisod
  3. windows: nssm => phần mềm tạo server.

Ngày 27/01/2022, tui đọc lại bài này thấy mình lúc đó ngáo thật, không hiểu rõ về queue. Khi mình run lệnh php artisan queue:work là auto mọi queue được đưa vào job sẽ được thực hiện ngay lập tức, mình chỉ cần run lệnh 1 lần và để đó thôi, chớ không phải có queue mới lại phải chạy lệnh đó nhé. hihi

5. Lưu ý

Trên server sẽ bị giới hạn thời gian thực hiện queue.

Sử dụng lệnh sau để không bị giới hạn thời gian limit.

php artisan queue:listen --timeout=0

Kết Luận

Trên đây là toàn bộ về queue trong laravel. Các bạn cũng thấy đấy mình có khá nhiều thắc mắc nên mình cũng đã tìm hiểu và viết bài chia sẻ về nó. Bài viết Event trong Laravel mình đã có chia sẻ một trong những thắc mắc trên.

Related posts:

  1. Controller và View trong Laravel
  2. Tạo URL trong Laravel 6 hết sức là chi tiết
  3. Middleware trong Laravel – lợi hại như thế nào
  4. Session trong Laravel

Post navigation

Previous Post:

Triết Lý Sống

Next Post:

Những câu chuyện suy ngẫm

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0078032
Visit Today : 131
Visit Yesterday : 154
This Month : 4303
Who's Online : 2
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes