Skip to content

Supercharge your Yii2 applications with RoadRunner blazing-fast HTTP server.

License

Notifications You must be signed in to change notification settings

yii2-extensions/road-runner

Repository files navigation

Yii Framework

RoadRunner


PHPUnit Mutation testing badge PHPStan

Supercharge your Yii2 applications with RoadRunner blazing-fast HTTP server
High-performance workers, automatic memory management, and seamless PSR-7 integration

Features

Feature Overview

Demo

Template

Explore the ready-to-run Yii2 + RoadRunner application template.

Installation

composer require yii2-extensions/road-runner:^0.1.0@dev

Basic Usage

Create your RoadRunner entry point (web/index.php)

<?php

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

use yii2\extensions\psrbridge\http\StatelessApplication;
use yii2\extensions\roadrunner\RoadRunner;

// production default (change to 'true' for development)
defined('YII_DEBUG') or define('YII_DEBUG', false);
// production default (change to 'dev' for development)
defined('YII_ENV') or define('YII_ENV', 'prod');

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';

$config = require dirname(__DIR__) . '/config/web.php';

$runner = new RoadRunner(new StatelessApplication($config));

$runner->run();

RoadRunner configuration

Create .rr.yaml in your project root

version: "3"
rpc:
    listen: "tcp://127.0.0.1:6001"
server:
    command: "php web/index.php"
    relay: pipes
http:
    address: "0.0.0.0:8080"
    # development-only overrides, remove or set to production values for deploys
    env:
        YII_DEBUG: true
        YII_ENV: dev

    headers:
        response:
            "Cache-Control": "no-cache"

    middleware:
        - static # serve files first
        - gzip # compress dynamic output

    static:
        dir: web
        forbid:
            - .php
            - .htaccess
    pool:
        num_workers: 1
        supervisor:
            max_worker_memory: 100
jobs:
    pool:
        num_workers: 2
        max_worker_memory: 100
    consume: {}

kv:
    local:
        driver: memory
        config:
            interval: 60
metrics:
    address: "127.0.0.1:2112"

Start the server

# install RoadRunner binary
vendor/bin/rr get

# start the server
./rr serve

Important

Your applicaion will be available at http://127.0.0.1:8080 (or http://localhost:8080) or at the address set in http.address in .rr.yaml.

Development & Debugging

For enhanced debugging capabilities and proper time display in RoadRunner, install the worker debug extension.

composer require --dev yii2-extensions/worker-debug:^0.1

Add the following to your development configuration (config/web.php):

<?php

declare(strict_types=1);

use yii2\extensions\debug\WorkerDebugModule;

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => WorkerDebugModule::class,
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

File Upload Handling

For enhanced file upload support in worker environments, use the PSR-7 bridge UploadedFile class instead of the standard Yii2 implementation.

<?php

declare(strict_types=1);

use yii2\extensions\psrbridge\http\{Response, UploadedFile};

final class FileController extends \yii\web\Controller
{
    public function actionUpload(): Response
    {
        $file = UploadedFile::getInstanceByName('avatar');

        if ($file !== null && $file->error === UPLOAD_ERR_OK) {
            $file->saveAs('@webroot/uploads/' . $file->name);
        }

        return $this->asJson(['status' => 'uploaded']);
    }
}

Documentation

For detailed configuration options and advanced usage.

Package information

PHP Yii 2.0.x Yii 22.0.x Latest Stable Version Total Downloads

Quality code

Codecov PHPStan Level Max Super-Linter StyleCI

Our social networks

Follow on X

License

License

About

Supercharge your Yii2 applications with RoadRunner blazing-fast HTTP server.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages