Skip to content

bckp/roadrunner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

19037d1 · Dec 4, 2023

History

24 Commits
Jan 2, 2023
Dec 4, 2023
Dec 4, 2023
Dec 4, 2023
Feb 2, 2022
Feb 2, 2022
Dec 4, 2023
Dec 4, 2023
Dec 4, 2023
Mar 15, 2022
Feb 2, 2022
Feb 8, 2022

Repository files navigation

MallGroup/Roadrunner

build Coverage Status Downloads this Month Latest stable Coverage Status License

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"