Asked Jul 14th, 6:02 AM 118 0 2
  • 118 0 2
+1

[HELP] mọi người giúp em vấn đề queue ở laravel với ạ !!!

Share
  • 118 0 2

Chuyện là em có làm web laravel khi người dùng đặt hàng thành công thì em có dùng queue để gửi mail cho người dùng đở phải chờ lâu dưới local chạy thì e dùng lệnh php artisan queue:work , php artisan queue:listen điều hoạt động ổn cã nhưng khi deloy lên host thì moi người kêu dùng cron em có dùng mà vẫn không có hoạt động em đang gặp vấn đề ở đó mong mọi người help em với ạ

EM CẢM ƠN MỌI NGƯỜI TRƯỚC !!

Jul 16th, 9:15 AM

@phuongdong1995 Có rất nhiều khả năng gây lỗi, có thể là code lỗi, code dưới local chạy được chưa chắc trên production đã chạy được. Có thể là do chưa cấu hình để chạy queue nên email chưa được gửi... Do dữ kiện bạn đưa ra khá ít nên anh em toàn phải đoán mò. Hy vọng bạn có thể bổ sung thêm logs lỗi của Laravel, logs lỗi của cron để ae có thể support bạn.

0
| Reply
Share
Jul 16th, 9:20 AM

Cách đơn giản nhất là bạn không cần phải quan tâm cron hay supervisor vội cả. Bạn cứ thực hiện hành động để làm xuất hiện tác vụ gửi mail. Sau đó lên trên server chạy lệnh:

php artisan queue:work

Sau đó quan sát trên màn hình console xem có log rằng class mail của bạn đã được processed hay không, hay là có lỗi. Nếu có lỗi thì bạn vào xem laravel.log để tìm lỗi.

0
| Reply
Share
Phương Đồng @phuongdong1995
Jul 16th, 9:54 AM

@huukimit host của mình không cho chạy terminal với chặn luôn ssh thì giờ còn cách nào khác không ông 😦

0
| Reply
Share
Jul 16th, 2:03 PM

@phuongdong1995 Vậy bạn để queue driver về synchronous rồi test chức năng để đảm chức năng hoạt động đúng đắn trước. Ngon lành cành đào rồi thì mình hãy tiếp tục với queue driver khác là ăn ngay ý mà 😄

0
| Reply
Share
Phương Đồng @phuongdong1995
Jul 17th, 4:49 AM

@huukimit là sao tui chưa hiểu lắm á ông ông có fb hay mạng xã hội nào không add chỉ tui với được không 😦

0
| Reply
Share
Jul 17th, 5:19 AM

@phuongdong1995 Ý mình là bạn sửa file .env trong project Laravel, thiết lập QUEUE_DRIVER=sync. Khi đó thì lúc bạn thực hiện tác vụ, thay vì push job vào queue worker thì laravel sẽ chạy ngay lập tức cái job đó luôn.

0
| Reply
Share
Phương Đồng @phuongdong1995
Jul 17th, 7:42 AM

@huukimit vậy thì ở giao diện người dùng nó có load nhanh không ông hay vẫn chờ đến khi nào xong mới load xong vậy ông

0
| Reply
Share
Phương Đồng @phuongdong1995
Jul 17th, 7:46 AM

@huukimit tôi thêm rồi nó vẫn chạy vô jobs chứ không chạy luôn như ông nói á ông

0
| Reply
Share
Jul 17th, 9:17 AM

@phuongdong1995 nó sẽ bị chậm, user phải chờ khi job done thì request mới có response. Mục đích là để test mà 😃

@phuongdong1995 Bạn đã clear cache config chưa? Bạn gửi logs lên mọi người check cùng chứ cứ đoán mò cũng không ổn lắm 😄

0
| Reply
Share

2 ANSWERS


Answered Jul 14th, 6:11 AM
Accepted
+1

Mình nghĩ bạn nên sử dụng supervisor. Việc dùng cron thì mình nghĩa bạn đang để mỗi giây hoặc mỗi phút chạy queue:work. Còn nếu bạn sử dụng supervisor thì sẽ lắng nghe được sự kiên khi user có action gửi mail thì queue:work sẽ được kích hoạt. Bạn có thể tham khảo qua bài viết của mình: https://viblo.asia/p/queue-trong-laravel-va-su-dung-supervisor-de-giam-sat-xu-ly-queue-tren-ubuntu-LzD5drYwZjY

Share
Phương Đồng @phuongdong1995
Jul 14th, 6:16 AM

mà mình dùng host thì có làm được không bạn hay chỉ có dùng trên vps thì mới được

0
| Reply
Share
Dương Mạnh Hoàng @duong.manh.hoang
Jul 14th, 6:23 AM

@phuongdong1995 https://github.com/alexsilva/supervisor mình có tìm thử thì có packet này, bạn có thể xem thử xem sao

0
| Reply
Share
Rybak Alexander @KAITOKIDK10
Jul 30th, 5:01 AM

@phuongdong1995 Queue work xong thì nó chờ sự kiện để thực thi. Nên chỉ cần chạy 1 lần hoặc khởi động lại khi server bị lỗi. Vậy dùng suppervisor là chuẩn rồi. Nên mark solution này nha 😃)

0
| Reply
Share
Answered Jul 14th, 6:04 AM
0

Bạn kiểm tra lại xem có lỗi gì khi chạy, hoặc có chạy cron job không, kiểm tra trong file log của cron job và log của apache xem

Share
Phương Đồng @phuongdong1995
Jul 14th, 6:16 AM

mình mới tiếp xúc nên không biết xem mấy cái đó sao luoonas bạn chỉ mình với được ko

0
| Reply
Share
Nghiem Tuan @TuanLinhChi
Jul 14th, 7:38 AM

Bạn check 2 file này trên server xem có lỗi gì ko nào ?

  • /var/log/apache2/error.log
  • các file log trong thư mục /project/storage/logs
  • log của cronjob (phần này cấu hình trong crontab rồi xem trong file /var/tenFile.txt)
          • cd /path-to-your-project && php artisan schedule:run >> /var/tenFile.txt
0
| Reply
Share