[HELP] mọi người giúp em vấn đề queue ở laravel với ạ !!!
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 !!
2 CÂU TRẢ LỜI
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
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
@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
@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 )
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
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
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
-
-
-
@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.
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:
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 xemlaravel.log
để tìm lỗi.@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
@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à
@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
@phuongdong1995 Ý mình là bạn sửa file
.env
trong project Laravel, thiết lậpQUEUE_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.@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
@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
@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