Avance PSR-7 es un servidor de alto rendimiento con una implementación del lenguaje Go, que no está mal, es el lenguaje Go.
Go Avance utilizó por primera vez para lograr un servidor de alto rendimiento, y luego envía la solicitud a la pluralidad de goridge IPC PHP Trabajador CLI, Trabajador solicitará re-empaquetado en PSR-7 trama de petición para ser procesado.
prueba de entretenimiento
prueba de estado de sitio usando laravel página de bienvenida 250 usuarios concurrentes, durante 30 segundos, y Comparado Nginx + Avance FPM.
Nginx + FPM:
$ siege --no-parser -c 250 -t 30s http://127.0.0.1:3000/ > /dev/null
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions: 2032 hits
Availability: 97.83 %
Elapsed time: 29.19 secs
Data transferred: 4.51 MB
Response time: 2.64 secs
Transaction rate: 69.61 trans/sec
Throughput: 0.15 MB/sec
Concurrency: 183.50
Successful transactions: 2032
Failed transactions: 45
Longest transaction: 27.34
Shortest transaction: 0.
Avance (4 trabajador):
$ siege --no-parser -c 250 -t 30s http://127.0.0.1:8080/ > /dev/null
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions: 61417 hits
Availability: 100.00 %
Elapsed time: 29.26 secs
Data transferred: 135.95 MB
Response time: 0.12 secs
Transaction rate: 2099.01 trans/sec
Throughput: 4.65 MB/sec
Concurrency: 249.06
Successful transactions: 61417
Failed transactions: 0
Longest transaction: 0.20
Shortest transaction: 0.05
La forma de acelerar la aplicación laravel
Avance de instalación
Avance ha proporcionado archivo ejecutable pre-compilado, se puede descargar la versión correspondiente de la plataforma, los archivos de configuración están disponibles Avance proporciona: El uso de Avance.
configuración laravel
Para su instalación depende:
composer require spiral/roadrunner zendframework/zend-diactoros symfony/psr-http-message-bridge
Crear un PSR-worker.php en el proyecto laravel, cambios en el código de Tobias-kuendig:
<?php
require __DIR__ . "/vendor/autoload.php";
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
$relay = new Spiral\Goridge\StreamRelay(STDIN, STDOUT);
$psr7 = new Spiral\RoadRunner\PSR7Client(new Spiral\RoadRunner\Worker($relay));
$app = require_once __DIR__ . '/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
while ($req = $psr7->acceptRequest()) {
try {
$httpFoundationFactory = new HttpFoundationFactory();
if (strpos($req->getHeaderLine("content-type"), "application/json") === 0) {
$body = $req->getBody();
$parsedBody = json_decode($body, true);
$req = $req->withParsedBody($parsedBody);
}
$symfonyReq = $httpFoundationFactory->createRequest($req);
$request = Illuminate\Http\Request::createFromBase($symfonyReq);
$response = $kernel->handle($request);
$psr7factory = new DiactorosFactory();
$psr7response = $psr7factory->createResponse($response);
$psr7->respond($psr7response);
} catch (\Throwable $e) {
$psr7->getWorker()->error((string)$e);
}
}
rr ejecutar servir -v get.
Obtenga más información, visite:
Por encima de la esperanza de ayudar a todos, muchas Phper siempre encontrar algunos problemas y cuellos de botella en el momento avanzada, escribir más código de negocio sin sentido de dirección, no sé por dónde empezar a subir, lo que he recopilado algunos datos, incluyendo pero no limitado a: una arquitectura distribuida, altamente escalable, de alto rendimiento, de alta concurrencia, el ajuste del rendimiento del servidor, TP6, laravel, YII2, Redis , Swoole, Swoft, Kafka, Mysql optimización, secuencias de comandos shell, estibador, micro-servicios, Nginx, etc. más avanzados conocimientos requeridos para los productos avanzados secos puede ser libre para que todos puedan compartir , es necesario añadir a mi grupo oficial aquí .