websightnl / gearman
PHP library for dispatching, handling and managing Gearman Workers
Installs: 7 121
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 2
Forks: 5
Open Issues: 1
pkg:composer/websightnl/gearman
Requires
- php: >=5.4.0
- ext-gearman: *
- psr/log: ~1
- react/event-loop: 0.4.*
- symfony/console: 2.*|3.4.*|4.1.*|5.*
Requires (Dev)
- phpunit/phpunit: ~4
This package is auto-updated.
Last update: 2025-10-17 04:35:15 UTC
README
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.
Table Of Content
- Requirements
- Installation
- Config
- Bootstrap
- Job example
- Dispatcher usage
- Start workers daemon
- Usage with Supervisor
Requirements
This library uses PHP 5.4+, PECL Gearman 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": {
       "websightnl/gearman": "~1.0"
    }
}
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' ]);
Parameters
- 
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 theSinergi\Gearman\BootstrapInterfaceinterface.
- 
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.
- 
string pidFilename 
 Change the filename of the created PID file (defaults to gearmanhandler.pid). The file is always created in the system temp path.
- 
string lockFilename 
 Change the filename of the created lock file (defaults to gearmanhandler.lock). The file is always created in the system temp path.
- 
int loopTimeout 
 Change the time (in milliseconds) between pinging the Gearman server. Defaults to the low value of 10 milliseconds, for legacy reasons. Change this value if you experience high load on your Gearman server!
Bootstrap
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 Dispatcher 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 supervisor 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
Usage with Supervisor
This is an example of a Supervisor configuration. Add it to your Supervisor configuration file (E.G. /etc/supervisord.conf).
[program:mygearman]
command=php /path/to/vendor/bin/gearman start --daemon=false
process_name=%(program_name)s-procnum-%(process_num)s
numprocs=12
autostart=true
autorestart=true