How to fire Laravel Queues with beanstalkd
Asked Answered
M

2

5

I'm pretty new to the whole Queue'd jobs thing in Laravel 4. I have some process heavy tasks I need the site to run in the background after being fired by the user doing a particular action.

When I was doing the local development for my site I was using this:

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

And I was using the local "sync" driver to do it. (The jobs would just automatically fire, impacting on the user experience but I assumed when going into the production phase I could switch it to beanstalkd and they would then be run in the background)

Which brings me to where I'm at now. I have beanstalkd set up with the dependencies installed with composer and the beanstalkd process listening for new jobs. I installed a beanstalk admin interface and can see my jobs going into the queue, but I have no idea how to actually get them to run!

Any help would be apprieciated, thanks!

Manganese answered 1/7, 2013 at 14:48 Comment(0)
P
18

This is actually a really badly documented feature in Laravel.

What you actually need to do is have the JobClass.php in a folder that is auto-loaded, I use app/commands, but they can also be in app/controllers or app/models if you like. And this function needs to have a fire event that takes the $job and $data argument.

To run these, simply execute php artisan queue:listen --timeout=60 in your terminal, and it will be busy emptying the queue, until it's empty, or it's been running for longer then 60 seconds. (Small note: The timeout is the time-limit to start a queue, so it may run for 69 seconds if 1 job takes 10 seconds.

If you only want to run 1 job (perfect for testing), run php artisan queue:work

There are tools like Supervisord that make sure your job handlers keep running, but I recommend to just make a Cron task that starts every X minutes based on how fast the data needs to be processed, and on how much data comes in.

Passbook answered 1/7, 2013 at 21:13 Comment(1)
Thanks. Laravel really needs better documentation. A great framework but with lousy documentation still sucks.Meteoroid
L
0

Keep in mind you need to path your artisan.

php /some/path/to/artisan queue:work

Lubricity answered 1/11, 2014 at 2:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.