2017-02-01 30 views
9

Tôi không thể hiểu sự khác biệt giữa Laravel queue:work và Laravel queue:listenhàng đợi sự khác biệt là gì: công việc và đợi: nghe

tôi có thể thấy đó là những gì:

  • Queue: Nghe một hàng đợi cho
  • việc: Xử lý các công việc tiếp theo vào một hàng đợi

Nhưng vẫn không nhận được nó, bởi vì tôi đã thử cả hai, cả hai sẽ chạy hàng đợi nếu có bất kỳ hàng đợi mới ("công việc tùy chọn "không chỉ chạy một lần)

Tôi không nói về tùy chọn daemon. Chỉ cần cả hai.

when i ran queue:work it works like listen

+0

có thể trùng lặp của http://stackoverflow.com/questions/26048698/what-is-the-difference-between-queuework-daemon-and-queuelisten – sumit

+0

Có thể trùng lặp của [Sự khác nhau giữa hàng đợi: work --daemon và queue: listen] (http://stackoverflow.com/questions/26048698/what-is-the-difference-between-queuework-daemon-and-queuelisten) –

+0

một lần nữa tôi yêu cầu mà không có tùy chọn --daemon – mistercat

Trả lời

12

Cho đến Laravel 5.2 bạn có :listen:work.

Work sẽ xử lý công việc đầu tiên trong hàng đợi.

Listen sẽ xử lý tất cả công việc khi chúng đến.

Trong Laravel 5.3 + điều này không còn là trường hợp. Listen vẫn tồn tại, nhưng nó không được dùng nữa và dự kiến ​​sẽ bị xóa trong 5.5. Bạn nên thích :work ngay bây giờ.

Work hiện đang xử lý công việc một lần, nhưng có rất nhiều tùy chọn bạn có thể định cấu hình.

+0

cảm ơn câu trả lời, vì vậy basiclly mà không có bất kỳ tùy chọn: lắng nghe và làm việc bây giờ là như nhau? – mistercat

+0

@mistercat Bạn nên quên hoàn toàn 'nghe' nếu bạn đang chạy môi trường ứng dụng' 5.4' và dính vào 'work' – Ohgodwhy

+0

Trong Laravel 5.2: công việc không cho phép - timeout, vì vậy tôi buộc phải sử dụng: nghe –

0

Các queue:work Artisan lệnh bao gồm một tùy chọn --daemon cho buộc người lao động hàng đợi để tiếp tục công việc chế biến mà không bao giờ tái khởi động khuôn khổ. Điều này dẫn đến một sự giảm đáng kể việc sử dụng CPU khi so sánh với hàng đợi: nghe lệnh:

Như bạn có thể thấy, công việc queue:work hỗ trợ hầu hết các tùy chọn tương tự sẵn cho queue:listen. Bạn có thể sử dụng php artisan help queue:work công việc để xem tất cả các tùy chọn có sẵn.

https://laravel.com/docs/5.1/queues#running-the-queue-listener

1

Có hai vấn đề khác nhau được liệt kê.

Có hàng đợi thợ thủ công: làm việc và đợi thợ thủ công: nghe

đợi: công việc sẽ đơn giản là bật tắt các công việc tiếp theo trong hàng đợi, và quá trình duy nhất mà một công việc. Đây là lệnh “một lần” sẽ trở lại dấu nhắc lệnh khi lệnh một hàng đợi được xử lý. Hàng đợi : nghe sẽ nghe hàng đợi và tiếp tục xử lý bất kỳ lệnh hàng đợi nào mà nó nhận được. Điều này sẽ tiếp tục chạy vô thời hạn cho đến khi bạn dừng nó. Trong Laravel> = 4.2 có một lệnh --daemon được thêm vào. Cách nó hoạt động chỉ đơn giản là tiếp tục chạy hàng đợi trực tiếp, thay vì khởi động lại toàn bộ khung công tác sau mỗi hàng đợi được xử lý. Đây là một lệnh tùy chọn làm giảm đáng kể yêu cầu bộ nhớ và cpu của hàng đợi của bạn.

Điểm quan trọng với lệnh --daemon là khi bạn nâng cấp ứng dụng, bạn cần phải khởi động lại hàng đợi của mình bằng hàng đợi: khởi động lại, nếu không bạn có thể gặp phải tất cả các lỗi lạ khi hàng đợi của bạn vẫn có mã cũ trong bộ nhớ.

Vì vậy, để trả lời câu hỏi của bạn "Tôi nên sử dụng lệnh nào để chạy các trình tiện ích của mình?" - câu trả lời hầu như luôn luôn xếp hàng: công việc --daemon

+0

cảm ơn, tôi tin rằng tôi vẫn còn nhớ một cái gì đó: như tôi viết "bởi vì tôi đã thử cả hai, cả hai sẽ chạy hàng đợi nếu có bất kỳ hàng đợi mới (" tùy chọn làm việc "không chỉ chạy một lần)". Vì vậy, khi bạn nói, quay trở lại lệnh propmt, nó không xảy ra, nó hoạt động như nghe, – mistercat

+0

tôi thêm một hình ảnh mới tại quesieton của tôi, và một lần nữa tôi không hỏi về tùy chọn daemon – mistercat

Các vấn đề liên quan