Various Yii 3.0 related documentation
RoadRunner is a Golang-powered application server that integrates well with PHP. It runs it as workers and each worker may handle multiple requests. Such an operation mode is often called event loop and allows not to re-initialize a framework for each request that improves performance significantly.
RoadRunner works on Linux, macOS and Windows. The best way to install it is to use a Composer:
composer require yiisoft/yii-runner-roadrunner
After installation is done, run
./vendor/bin/rr get
That would download ready to use RoadRunner server rr
binary.
First, we need to configure the server itself. Create /.rr.yaml
and add the following config:
server:
command: "php worker.php"
rpc:
listen: tcp://127.0.0.1:6001
http:
address: :8080
pool:
num_workers: 4
max_jobs: 64
middleware: ["static", "headers"]
static:
dir: "public"
forbid: [".php", ".htaccess"]
headers:
response:
"Cache-Control": "no-cache"
reload:
interval: 1s
patterns: [ ".php" ]
services:
http:
recursive: true
dirs: [ "." ]
logs:
mode: production
level: warn
We’re specifying that entry script is worker.php
, there should be three workers on port 8080, public
directory
files are static ones except .php
and .htaccess
. Also, we’re sending additional header.
Create /worker.php
:
<?php
declare(strict_types=1);
use Yiisoft\Yii\Runner\RoadRunner\RoadRunnerApplicationRunner;
ini_set('display_errors', 'stderr');
require_once __DIR__ . '/preload.php';
(new RoadRunnerApplicationRunner(__DIR__, $_ENV['YII_DEBUG'], $_ENV['YII_ENV']))->run();
To start a server, execute the following command:
./rr serve -d