bckp / roadrunner
Integration of Nette Framework into RoadRunner
Requires
- php: >=8 <8.3
- nette/application: ^3.0.7
- nette/di: ^3.0.7
- nette/http: ^3.0
- nette/schema: ^1.2
- nette/utils: ^3.0
- psr/http-server-middleware: ^1.0
- spiral/roadrunner-http: ^2.0
Requires (Dev)
- nette/bootstrap: ^3.0
- nette/tester: ^2.4
- phpstan/phpstan-nette: ^1.0
- squizlabs/php_codesniffer: ^3.6
- tracy/tracy: ^2.9
- vimeo/psalm: ^5.3
Suggests
- guzzlehttp/psr7: A implementation of PSR-7
- nyholm/psr7: A implementation of PSR-7
- tracy/tracy: To set tracyHook and get Tracy blueScreen on exceptions
Replaces
This package is auto-updated.
Last update: 2024-10-04 21:58:56 UTC
README
Integration of RoadRunner into Nette Framework
Installation
The best way to install Bckp/Roadrunner is using Composer:
$ composer require bckp/roadrunner
Then you need to create small update to your app.
Configure app
Create new RR config, in our case it is roadrunner.neon
extensions: roadrunner: Bckp\RoadRunner\DI\Extension roadrunner: showExceptions: %debugMode%
Then we need to update our bootstrap, as RR extension is still big WIP, it is recomended not to enable debug mode. So in current Bootstrap we create new static method for booting into RR plugin
public static function bootRR(string $appDir): Configurator { $configurator = new Configurator; $configurator->setTimeZone('Europe/Prague'); $configurator->setTempDirectory($appDir . '/temp'); $configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); $configurator->addConfig($appDir . '/config/common.neon'); $configurator->addConfig($appDir . '/config/services.neon'); $configurator->addConfig($appDir . '/config/local.neon'); $configurator->addConfig($appDir . '/config/roadrunner.neon'); return $configurator; }
And finally, we need our entrypoint that will be runned by RoadRunner, we call this script a roadrunner.php
<?php declare(strict_types=1); use Bckp\RoadRunner\RoadRunner; use App\Bootstrap; define('ROOT_DIR', dirname(__DIR__)); require ROOT_DIR . '/vendor/autoload.php'; /** @psalm-suppress PossiblyNullReference */ Bootstrap::bootRR(ROOT_DIR) ->createContainer() ->getByType(RoadRunner::class) ->run();
and shell counterpart (we use it for redirect of err messages)
#!/usr/bin/env sh exec php /app-path/app/roadrunner.php 2>&3
Now we can run RoadRunner with our app, simply run it
server: command: "sh /app-path/app/roadrunner.sh -d opcache.enable_cli=1" relay: "pipes"