Yêu cầu thg 7 14, 2020 6:02 SA 189 0 2
  • 189 0 2
+1

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

Chia sẻ
  • 189 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 !!

thg 7 16, 2020 9:15 SA

@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.

thg 7 16, 2020 9:20 SA

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.

Avatar Phương Đồng @phuongdong1995
thg 7 16, 2020 9:54 SA

@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 😦

thg 7 16, 2020 2:03 CH

@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à 😄

Avatar Phương Đồng @phuongdong1995
thg 7 17, 2020 4:49 SA

@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 😦

thg 7 17, 2020 5:19 SA

@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.

Avatar Phương Đồng @phuongdong1995
thg 7 17, 2020 7:42 SA

@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

Avatar Phương Đồng @phuongdong1995
thg 7 17, 2020 7:46 SA

@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

thg 7 17, 2020 9:17 SA

@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 😄

2 CÂU TRẢ LỜI


Đã trả lời thg 7 14, 2020 6:11 SA
Đã được chấp nhận
+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

Chia sẻ
Avatar Phương Đồng @phuongdong1995
thg 7 14, 2020 6:16 SA

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

Avatar Dương Mạnh Hoàng @duong.manh.hoang
thg 7 14, 2020 6:23 SA

@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

Avatar Rybak Alexander @KAITOKIDK10
thg 7 30, 2020 5:01 SA

@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 😃)

Đã trả lời thg 7 14, 2020 6:04 SA
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

Chia sẻ
Avatar Phương Đồng @phuongdong1995
thg 7 14, 2020 6:16 SA

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

Avatar Tun Tun @TuanLinhChi
thg 7 14, 2020 7:38 SA

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
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí