Skip to content

[READ ONLY] Core of PHPStreamServer

Notifications You must be signed in to change notification settings

phpstreamserver/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHPStreamServer logo

PHPStreamServer — PHP Application Server

PHP >=8.2 Version Downloads

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.

Features

  • 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.

Requirements and limitations

  • Unix based OS (no windows support);
  • php-posix and php-pcntl extensions;

Install

$ composer require phpstreamserver/core

Configure

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());

Run

$ php server.php start