Beschleunigen Sie Laravel-Anwendungen mit RoadRunner

不言
Freigeben: 2023-04-02 18:00:02
Original
3235 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Verwendung von RoadRunner zur Beschleunigung von Laravel-Anwendungen vor. Jetzt kann ich ihn mit Ihnen teilen.

RoadRunner ist ein leistungsstarkes Programm In der Go-Sprache ist der PSR-7-Server, wie Sie richtig gelesen haben, 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.

Unterhaltungstest

Verwenden Sie Siege, um die Willkommensseite von Laravel, 250 gleichzeitige Benutzer, 30 Sekunden lang zu testen und Nginx + FPM und RoadRunner zu vergleichen.

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 stellt bereits eine vorkompilierte ausführbare Datei bereit. Laden Sie einfach die der Plattform entsprechende Version herunter. Die Konfigurationsdatei kann von RoadRunner bereitgestellt werden: Mit RoadRunner.

Laravel-Konfiguration

Installationsabhängigkeiten:

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

Erstellen Sie ein 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 serve -v aus, um es zu erledigen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Zusammenfassung der Nutzung des Laravel-Ereignissystems

Das Laravel WeChat-Applet ruft Benutzerdetails und parametrisierten Applet-Code ab. Erweiterte Analyse

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

Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!