تخطَّ إلى المحتوى
PHP Ecosystem
Explore

RoadRunner

هذا المحتوى غير متوفر بلغتك بعد.

Supercharge your Yii2 applications with RoadRunner blazing-fast HTTP server

High-performance workers, automatic memory management, and seamless PSR-7 integration

Feature Overview

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

Terminal window
composer require yii2-extensions/road-runner:^0.4 httpsoft/http-message

Register the HTTP worker and message factories before starting the entry point. See the installation guide for runtime setup.

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

<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
use yii2\extensions\psrbridge\http\Application;
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 Application($config));
exit($runner->run());

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"
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"
Terminal window
# install RoadRunner binary
vendor/bin/rr get
# start the server
./rr serve

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

Terminal window
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'],
];
}

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) {
// validate the file before saving; choose a server-controlled storage name
$file->saveAs('@runtime/uploads/' . bin2hex(random_bytes(16)) . '.bin');
}
return $this->asJson(['status' => 'uploaded']);
}
}

Create the destination directory and apply your application’s upload validation before using this example.

Practical guides and a complete worker example for RoadRunner and PSR-7 integration.

AI agents: use the repository guides and source for the installed revision. For a documentation deployment with llms.txt, read that index first. When Markdown export is enabled, append index.md to a page URL. For Yii conventions, use the yii2-framework skill from a local framework documentation checkout.

If the hosted sources are unavailable, use the repository guides and locally available skills.

Follow on X Follow on Facebook Join our Subreddit Join on Telegram

License