spiral / roadrunner-services
RoadRunner services manager
Fund package maintenance!
2.3.0
2026-01-26 05:31 UTC
Requires
- php: >=8.1
- google/protobuf: ^3.7 || ^4.0
- roadrunner-php/roadrunner-api-dto: ^1.4
- spiral/goridge: ^4.0
- spiral/roadrunner: ^2023.2 || ^2024.1 || ^2025.1
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^10.0
- vimeo/psalm: >=5.8
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Roadrunner services manager
This package will help you to manage Roadrunner services
Requirements
Make sure that your server is configured with following PHP version and extensions:
- PHP 8.1+
Installation
You can install the package via composer:
composer require spiral/roadrunner-services
Usage
Such a configuration would be quite feasible to run:
rpc: listen: tcp://127.0.0.1:6001 service: {}
Then you need to create an instance of Spiral\RoadRunner\Services\Manager
use Spiral\RoadRunner\Services\Manager; use Spiral\Goridge\RPC\RPC; $rpc = RPC::create('tcp://127.0.0.1:6001')); $manager = new Manager($rpc);
Create a new service
use Spiral\RoadRunner\Services\Exception\ServiceException; try { $result = $manager->create( name: 'listen-jobs', command: 'php app.php queue:listen', processNum: 3, execTimeout: 0, remainAfterExit: false, env: ['APP_ENV' => 'production'], restartSec: 30 ); if (!$result) { throw new ServiceException('Service creation failed.'); } } catch (ServiceException $e) { // handle exception }
Check service status
use Spiral\RoadRunner\Services\Exception\ServiceException; try { $status = $manager->statuses(name: 'listen-jobs'); // Will return an array with statuses of every run process // [ // [ // 'cpu_percent' => 59.5, // 'pid' => 33, // 'memory_usage' => 200, // 'command' => 'foo/bar', // 'error' => null // ], // [ // 'cpu_percent' => 60.2, // 'pid' => 34, // 'memory_usage' => 189, // 'command' => 'foo/bar' // 'error' => [ // 'code' => 1, // 'message' => 'Process exited with code 1' // 'details' => [...] // array with details // ] // ], // ] } catch (ServiceException $e) { // handle exception }
Restart service
use Spiral\RoadRunner\Services\Exception\ServiceException; try { $result = $manager->restart(name: 'listen-jobs'); if (!$result) { throw new ServiceException('Service restart failed.'); } } catch (ServiceException $e) { // handle exception }
Terminate service
use Spiral\RoadRunner\Services\Exception\ServiceException; try { $result = $manager->terminate(name: 'listen-jobs'); if (!$result) { throw new ServiceException('Service termination failed.'); } } catch (ServiceException $e) { // handle exception }
List of all services
use Spiral\RoadRunner\Services\Exception\ServiceException; try { $services = $manager->list(); // Will return an array with services names // ['listen-jobs', 'websocket-connection'] } catch (ServiceException $e) { // handle exception }