Skip to content

Latest commit

 

History

History
152 lines (106 loc) · 3.63 KB

README.md

File metadata and controls

152 lines (106 loc) · 3.63 KB

Gearman

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

PHP library for dispatching, handling and managing Gearman Workers

Todo: Add support for tasks, only jobs are handled right now.
Todo: Tests are working but could cover more.

Requirements

This library uses PHP 5.4+ and Gearman 1.0+.

Installation

It is recommended that you install the Gearman library through composer. To do so, add the following lines to your composer.json file.

{
    "require": {
       "sinergi/gearman": "dev-master"
    }
}

Config

The library uses a Config class to share configuration between classes.

Example

use Sinergi\Gearman\Config;

$config = (new Config())
    ->addServer('127.0.0.1', 4730)
    ->setUser('apache');

Example using array

Alternatively, you can setup the config with an array.

use Sinergi\Gearman\Config;

$config = new Config([
    'servers' => ['127.0.0.1:4730', '127.0.0.1:4731'],
    'user' => 'apache'
]);

Paramaters

  • string server
    The Gearman Server (E.G. 127.0.0.1:4730).

  • array servers
    Pool of Gearman Servers.

  • string bootstrap
    Path to the bootstrap file.

  • string class
    Fully qualified name of the bootstrap class, the class needs to implement the Sinergi\Gearman\BootstrapInterface interface.

  • array env_variables
    Environment variables you want to send to your bootstrap.

  • string user
    The user under which the Gearman Workers will run (E.G. apache).

  • bool auto_update
    Use for development only, automatically updates workers before doing a job or task.

Boostrap

File /path/to/your/bootstrap.php

use Sinergi\Gearman\BootstrapInterface;
use Sinergi\Gearman\Application;

class MyBootstrap implements BootstrapInterface
{
    public function run(Application $application)
    {
        $application->add(new JobExample());
    }
}

Job example

use Sinergi\Gearman\JobInterface;
use GearmanJob;

class JobExample implements JobInterface
{
    public function getName()
    {
        return 'JobExample';
    }

    public function execute(GearmanJob $job)
    {
        // Do something
    }
}

Dispatcher usage

To send tasks and jobs to the Workers, use the Distpacher like this:

use Sinergi\Gearman\Dispatcher;

$dispatcher = new Dispatcher($config);
$dispatcher->execute('JobExample', ['data' => 'value']);

Start workers daemon

Starts the Workers as a daemon. You can use something like supervisord to make sure the Workers are always running. You can use the same parameters as in the config.

Single server

php vendor/bin/gearman start --bootstrap="/path/to/your/bootstrap.php" --class="MyBootstrap" --server="127.0.0.1:4730"

Multiple servers

php vendor/bin/gearman start --bootstrap="/path/to/your/bootstrap.php" --class="MyBootstrap" --servers="127.0.0.1:4730,127.0.0.1:4731"

List of commands

  • start
  • stop
  • restart