Download the PHP package smskin/laravel-daemon-supervisor without Composer
On this page you can find all versions of the php package smskin/laravel-daemon-supervisor. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download smskin/laravel-daemon-supervisor
More information about smskin/laravel-daemon-supervisor
Files in smskin/laravel-daemon-supervisor
Package laravel-daemon-supervisor
Short Description Daemon supervisor engine for laravel projects
License MIT
Informations about the package laravel-daemon-supervisor
Basic Library for Implementing Child Processes in Laravel
The idea for this library originated from studying the source code of Laravel Horizon.
Horizon starts a master process that spawns child processes to execute tasks from queues.
How It Works
We start a master process (supervisor
), which spawns and manages child processes (worker
).
The master process is subscribed to PCNTL signals. Upon receiving a signal, it first terminates the child processes and then stops itself.
Usage
Master Process (supervisor) - CLI
The artisan command class for the supervisor should extend SMSkin\LaravelSupervisor\Commands\SupervisorsCommand
.
In the class, you need to implement the method protected function getWorkers(): Collection
, which returns a collection of worker process models (classes that implement the SMSkin\LaravelSupervisor\Contracts\IWorker
interface).
You can find an example of an artisan command in ./src/Examples/TestSupervisorCommand.php
.
Worker Process (worker) - CLI
The artisan command class for the worker should extend SMSkin\LaravelSupervisor\Commands\WorkerCommand
.
In the class, you need to implement two methods:
public function getSubscribedSignals(): array
- an array of PCNTL signals that this process listens for.-
public function handleSignal(int $signal, false|int $previousExitCode = 0): int|false
- a method called when a PCNTL signal is received. - You can find an example of an artisan command in
./src/Examples/TestWorkerCommand.php
.
Worker Process Model
The class should implement the SMSkin\LaravelSupervisor\Contracts\IWorker interface
.
In the class, you need to implement the method public function getArtisanCommand(): string
, which returns the artisan command corresponding to the worker process.
You can find an example class in ./src/Examples/TestWorker.php
.