Я думаю, что умирать он будет и так… еще с десяток лет, а может и не один :)
А по существу, то даже так прирост производительности будет, ибо нет создания процесса, подключения файлов и компиляции кода/загрузка из опкэша)
RoadRunner интегрируется посредством добавления цикла с получением PSR-7 запроса, поверх обычного запуска приложения, примерно вот так:
Код воркера
<?php
use Spiral\Goridge\StreamRelay;
use Spiral\RoadRunner\Worker;
use Spiral\RoadRunner\PSR7Client;
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
use Illuminate\Http\Request;
require_once(__DIR__ . '/../vendor/autoload.php');
$relay = new StreamRelay(STDIN, STDOUT);
$psr7 = new PSR7Client(new Worker($relay));
$requester = new HttpFoundationFactory();
$responder = new DiactorosFactory();
$app = require_once(__DIR__ . '/../bootstrap/app.php');
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
while ($psr7Request = $psr7->acceptRequest()) {
try {
$request = Request::createFromBase(
$requester->createRequest($psr7Request)
);
$response = $kernel->handle($request);
$kernel->terminate($request, $response);
$psr7Response = $responder->createResponse($response);
$psr7->respond($psr7Response);
} catch (\Throwable $e) {
$psr7->getWorker()->error((string) $e);
}
}
При таком подходе, постоянно есть ссылка только на инстанс $app и $kernel. Все остальное, что находится вне этих инстансов, сборщик мусора затирает (ибо он затирает все, на что ссылок больше не осталось), в том числе и подключения к БД (если они созданы вне контейнера $app), сокеты и прочие ресурсы.
В теории, если внести создание $app и $kernel внутрь цикла, то сборщик мусора при каждом новом запросе будет чистить абсолютно все.
По поводу DNS-резолва: проблема не только на Android. На 3х ПК с Windows 10 резолв стабильно идет несколько секунд и это очень разражает, на Linux такого нет.
В целом за сервис огромное спасибо :)
А по существу, то даже так прирост производительности будет, ибо нет создания процесса, подключения файлов и компиляции кода/загрузка из опкэша)
При таком подходе, постоянно есть ссылка только на инстанс $app и $kernel. Все остальное, что находится вне этих инстансов, сборщик мусора затирает (ибо он затирает все, на что ссылок больше не осталось), в том числе и подключения к БД (если они созданы вне контейнера $app), сокеты и прочие ресурсы.
В теории, если внести создание $app и $kernel внутрь цикла, то сборщик мусора при каждом новом запросе будет чистить абсолютно все.
В целом за сервис огромное спасибо :)
Документация messages.send