Heim > PHP-Framework > Laravel > Hauptteil

So beschleunigen Sie Laravel-Anwendungen mit RoadRunner

藏色散人
Freigeben: 2020-04-02 13:55:12
nach vorne
3658 Leute haben es durchsucht

So beschleunigen Sie Laravel-Anwendungen mit RoadRunner

RoadRunner ist ein leistungsstarker PSR-7-Server, der in der Go-Sprache implementiert ist. Sie haben richtig gelesen, er ist in der Go-Sprache implementiert.

RoadRunner implementiert zunächst einen Hochleistungsserver mit Go und leitet die Anfrage dann über goridge IPC an mehrere PHP-CLI-Worker weiter. Der Worker kapselt die Anfrage erneut in eine PSR-7-Anfrage und übergibt sie an den Rahmen für die Verarbeitung.

Empfohlen: Laravel-Tutorial

Unterhaltungstest

Verwenden Sie Siege, um die Begrüßungsseite von Laravel zu testen, 250 gleichzeitige Benutzer, fortlaufend 30 Sekunden, Vergleich von Nginx + FPM und RoadRunner.

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.
Nach dem Login kopieren

RoadRunner (4 Arbeiter):

$ 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
Nach dem Login kopieren

So beschleunigen Sie die Laravel-Anwendung

RoadRunner-Installation

RoadRunner hat vorkompilierte ausführbare Dateien bereitgestellt. Laden Sie einfach die der Plattform entsprechende Version herunter. Die Konfigurationsdatei kann von RoadRunner bereitgestellt werden.

Laravel-Konfiguration

Installationsabhängigkeiten:

composer require spiral/roadrunner zendframework/zend-diactoros symfony/psr-http-message-bridge
Nach dem Login kopieren

Erstellen Sie eine psr-worker.php im Laravel-Projekt und ändern Sie den Code von 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__ . &#39;/bootstrap/app.php&#39;;
$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);
    }
}
Nach dem Login kopieren

Führen Sie rr servo -v aus. Fertig.

Das obige ist der detaillierte Inhalt vonSo beschleunigen Sie Laravel-Anwendungen mit RoadRunner. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage