PHPStreamServer is a high performance, event-loop based application server and process supervisor for PHP written in PHP. As the core component of PHPStreamServer, this module is responsible for comprehensive worker management.
- Worker lifecycle management: Handles the creation, monitoring, and termination of worker processes.
- Automatic restarts: Automatically restarts workers in case of an exception or upon reaching specified limits.
- Time-to-live limits: Sets execution time limits for worker processes.
- Memory usage limits: Set memory usage limits to prevent memory leaks.
- Support for external programs: Use all of these to enable the supervision of external programs and processes.
- Resource sharing across workers: Preload any resources in a master process, and it will be shared among all workers reducing memory usage.
- Unix based OS (no windows support);
- php-posix and php-pcntl extensions;
$ composer require phpstreamserver/core
Here is an example of a simple supervisor server configuration.
// server.php
use PHPStreamServer\Core\Plugin\Supervisor\ExternalProcess;
use PHPStreamServer\Core\Plugin\Supervisor\WorkerProcess;
use PHPStreamServer\Core\Server;
$server = new Server();
$server->addWorker(
new WorkerProcess(
name: 'Supervised Program',
count: 1,
onStart: function (WorkerProcess $worker): void {
// custom long running process
},
),
new ExternalProcess(
name: 'External supervised program',
count: 1,
command: 'sleep 600'
),
);
exit($server->run());
$ php server.php start