PHPackages                             koenbetsens/jobserver - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. koenbetsens/jobserver

ActiveLibrary[Queues &amp; Workers](/categories/queues)

koenbetsens/jobserver
=====================

Gearman Jobserver Integration

46631PHP

Since Feb 14Pushed 10y ago1 watchersCompare

[ Source](https://github.com/koenbetsens/jobserver)[ Packagist](https://packagist.org/packages/koenbetsens/jobserver)[ RSS](/packages/koenbetsens-jobserver/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

JobServer
=========

[](#jobserver)

Gearman JobServer implementation for Laravel

### Gearman

[](#gearman)

Gearman is a MQ (Message Queue) provider with foreground and background capabilities. This makes it one of the few PHP-suited synchronous MQ handlers.

[gearman.org](http://gearman.org/)

### Laravel

[](#laravel)

Laravel is on of the leanest and meanest PHP Frameworks around - perfectly suited for rest API projects.

[laravel.com](http://laravel.com/)

---

The package
-----------

[](#the-package)

The **Jobserver package** is a Gearman dispatch implementation for Laravel. The package functions as an abstraction layer to send both foreground as background jobs to a MQ server (Gearman in this case). The Jobserver package is taylored to use in the 3-layer structure (app &lt;-&gt; api &lt;-&gt; worker).

Read more about installing and using the jobserver package here:

[3-layer - JobServer package](http://www.betsens.be/blog/2015/02/jobserver-package/)

[3-Layer - Set up Message Queueing](http://www.betsens.be/blog/2014/06/3-layer-set-up-message-queueing/)

---

Implementation
--------------

[](#implementation)

Add the package to your API dependencies. To use the local "synced" mode - skipping a local Gearman installation - add the models/Ghostjob.php file to your worker app/models directory. To make the synced connection between the API and worker job function work, add "echo Ghostjob::evaluate ('controllerDispatch', $argv);" to the end of the required function files.

#### Installation

[](#installation)

Add the Jobserver package to the composer requirements of your API project. In `project/composer.json`, add the `koenbetsens/jobserver` entry

 array ( 'Illuminate\\Foundation\\Providers\\ArtisanServiceProvider', ... 'Illuminate\\Workbench\\WorkbenchServiceProvider', 'koenbetsens\\jobserver\\JobServerServiceProvider' ) The package has 2 modes: "Gearman mode" (default) and "Synchronized mode" to enable functional communication without an actual MQ install. #### Gearman mode If your Gearman server runs on the same machine as your API project, Jobserver will work out-of-the-box. To send your jobs to an external queue, create a config file named `app/config/gearman.php` to store your Gearman server location. You can add multiple servers, or single servers for multiple environments, by creating \[config environment-folders\]() array ( 'gearman.project-url.ext' =&gt; '4730' ) ); #### Synchronized (local) mode To save yourself the hassle of installing Gearman locally for development, you can enabled the \*\*sync mode\*\* for \*\*php-cli\*\* based execution of the jobload. This mode will only work when debug mode is on, to prevent sync mode in production-level environments. ##### Configuration The configuration can be added directly to your `app/config/**local**/app.php` file. Your worker path points to the \*\*job functions directory\*\* (usually named `/jobs`) true, /\*\* |-------------------------------------------------------------------------- | Synchronized |-------------------------------------------------------------------------- | If set, the API will call the worker directly, instead of using a jobserver. \*\*/ 'synchronized' =&gt; true, /\*\* |-------------------------------------------------------------------------- | Worker path |-------------------------------------------------------------------------- | This path is used by the local Jobserver to sync a queue request. \*\*/ 'worker' =&gt; array ( 'path' =&gt; '/path/to/project/worker/jobs' ) ); ##### Ghostjob model We need to emulate a job model for syncronized usage. Copy the `/models/Ghostjob.php` file from the Jobserver package to the `app/models` folder in your worker project. Now you can selectively add the Ghostjob evaluation in the job-function files like this:

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/46a1f5fb785419ecea5d467ae6b13665998c2850da3cc2c9d5b294021e4d5ddb?d=identicon)[koenbetsens](/maintainers/koenbetsens)

---

Top Contributors

[![koenbetsens](https://avatars.githubusercontent.com/u/3852397?v=4)](https://github.com/koenbetsens "koenbetsens (7 commits)")

### Embed Badge

![Health badge](/badges/koenbetsens-jobserver/health.svg)

```
[![Health](https://phpackages.com/badges/koenbetsens-jobserver/health.svg)](https://phpackages.com/packages/koenbetsens-jobserver)
```

###  Alternatives

[league/geotools

Geo-related tools PHP 7.3+ library

1.4k5.3M26](/packages/league-geotools)[amphp/parser

A generator parser to make streaming parsers simple.

14952.8M16](/packages/amphp-parser)[amphp/serialization

Serialization tools for IPC and data storage in PHP.

13451.1M18](/packages/amphp-serialization)[enqueue/enqueue

Message Queue Library

19820.0M56](/packages/enqueue-enqueue)[deliciousbrains/wp-background-processing

WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.

1.1k409.8k6](/packages/deliciousbrains-wp-background-processing)[react/async

Async utilities and fibers for ReactPHP

2238.8M170](/packages/react-async)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
