register gearmand queue manager for laravel
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src Compatibility with Laravel 5.4 Nov 6, 2017
tests initial commit Sep 13, 2013
.gitignore initial commit Sep 13, 2013
.travis.yml initial commit Sep 13, 2013 Added support for multiple servers. Jul 24, 2017
composer.json updated for laravel 5 Feb 9, 2015
phpunit.xml initial commit Sep 13, 2013


This package gives you the possibily to add gearman as native queue back-end service


first you need to add it to your composer.json

second, in config/app.php, you need to comment out the native queue service provider


and to put this instead:


Then in your config/queue.php file you can add:

'default' => 'gearman',
'connections' => array(
    'gearman' => array(
        'driver' => 'gearman',
        'host'   => 'localserver.6min.local',
        'queue'  => 'default',
        'port'   => 4730,
        'timeout' => 1000 //milliseconds

or, if you have multiple gearman servers:

'default' => 'gearman',
'connections' => array(
    'gearman' => array(
        'driver' => 'gearman',
        'hosts'  => array(
            array('host' => 'localserver.6min.local', 'port' => 4730),
            array('host' => 'localserver2.6min.local', 'port' => 4730),
        'queue'  => 'default',
        'timeout' => 1000 //milliseconds

Then in your code you can add code as (this is the native way to add jobs to the queue):

Queue::push('SomeClass', array('message' => 'The data that should be available in the SomeClass@fire method'));

Small hint, you can call Namespaced classes and everything that is written in the docs of laravel for calling custom methods is valid here, too.


I add a "service" folder to my app folder and inside I create a file "SendMail.php" The code of the class is here:


namespace TaskProcess\Services;

class SendMail {

    public function fire($job, $data)
        //I send an email to my email address with subject "gearman test" and message whatever comes from gearman
        mail('', 'gearman test', $data['message']);


In my routes file I add a new Route

Route::get('/gearman', function() {
    //in a loop I add 3 jobs to gearman with different content. The purpose is to see 3 different emails with 3 different contents
    foreach (array(1,2,3) as $row) {
        Queue::push('TaskProcess\Services\SendMail', array('message' => 'Message №' . $row));

Finally I just run on my console:

php artisan queue:listen

And I go to check what's on my email


Please if you notice a bug open an issue or submit request.

Hope this package will help you