2013-07-01 51 views
5

Tôi khá mới đối với toàn bộ công việc Queue'd trong Laravel 4. Tôi có một số nhiệm vụ nặng nề quá trình tôi cần trang web chạy trong nền sau khi bị người dùng sa thải hành động cụ thể.Làm thế nào để cháy Hàng đợi Laravel với beanstalkd

Khi tôi đang làm việc phát triển địa phương cho trang web của tôi, tôi đã sử dụng này:

Queue::push('JobClass', array('somedata' => $dataToBeSent)); 

Và tôi đã sử dụng các địa phương "đồng bộ hóa" tài xế để làm điều đó. (Các công việc sẽ tự động cháy, ảnh hưởng đến trải nghiệm người dùng nhưng tôi giả định khi đi vào giai đoạn sản xuất, tôi có thể chuyển sang chế độ beanstalkd và sau đó chúng sẽ chạy ở chế độ nền)

Điều này đưa tôi đến nơi tôi ngay bây giờ. Tôi đã cài đặt beanstalkd với các phụ thuộc được cài đặt với nhà soạn nhạc và quá trình beanstalkd đang lắng nghe các công việc mới. Tôi đã cài đặt một giao diện quản trị beanstalk và có thể thấy công việc của tôi đi vào hàng đợi, nhưng tôi không có ý tưởng làm thế nào để thực sự làm cho họ chạy!

Bất kỳ trợ giúp nào sẽ được apprieciated, cảm ơn!

Trả lời

18

Đây thực sự là một tính năng thực sự kém tài liệu trong Laravel.

Những gì bạn thực sự cần làm là có JobClass.php trong một thư mục được tự động tải, tôi sử dụng ứng dụng/lệnh, nhưng chúng cũng có thể nằm trong ứng dụng/bộ điều khiển hoặc ứng dụng/mô hình nếu bạn muốn. Và chức năng này cần phải có một sự kiện hỏa hoạn có đối số $ job và $ data.

Để chạy chúng, chỉ cần thực hiện php artisan queue:listen --timeout=60 trong thiết bị đầu cuối của bạn và sẽ bận khi làm trống hàng đợi, cho đến khi nó trống hoặc đã chạy lâu hơn 60 giây. (Ghi chú nhỏ: Thời gian chờ là giới hạn thời gian để bắt đầu một hàng đợi, vì vậy nó có thể chạy trong 69 giây nếu 1 công việc mất 10 giây. chạy php artisan queue:work

có các công cụ như Supervisord rằng đảm bảo xử lý công việc của bạn tiếp tục chạy, nhưng tôi khuyên bạn nên chỉ cần thực hiện một nhiệm vụ Cron mà bắt đầu mỗi phút X dựa vào tốc độ dữ liệu cần phải được xử lý, và trên dữ liệu bao nhiêu đi kèm.

+0

Cảm ơn, đã giải quyết mọi thứ! – Tyrone

+0

Cảm ơn. Laravel thực sự cần tài liệu tốt hơn. Một khuôn khổ tuyệt vời nhưng với tài liệu tệ hại vẫn còn hút. – woens

0

Hãy nhớ rằng bạn cần phải hướng dẫn nghệ nhân của mình.

hàng đợi php/some/path/to/artisan: làm việc

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