Accelerate Laravel applications using RoadRunner

不言
Release: 2023-04-02 18:00:02
Original
3226 people have browsed it

This article mainly introduces the use of RoadRunner to accelerate Laravel applications. It has certain reference value. Now I share it with you. Friends in need can refer to it.

RoadRunner is a high-performance program implemented in Go language. PSR-7 server, you read that right, is implemented in Go language.

RoadRunner first uses Go to implement a high-performance server, and then forwards the request to multiple PHP CLI Workers through goridge IPC. The Worker will re-encapsulate the request into a PSR-7 Request and hand it over to the framework for processing.

Entertainment Test

Use siege to test Laravel's Welcome page, 250 concurrent users, lasting 30 seconds, comparing Nginx FPM and 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.
Copy after login

RoadRunner(4 worker):

$ 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
Copy after login

How to speed up Laravel application

RoadRunner installation

RoadRunner has been provided To obtain the precompiled executable file, just download the version corresponding to the platform. The configuration file can be provided by RoadRunner: Using RoadRunner.

Laravel configuration

Installation dependencies:

composer require spiral/roadrunner zendframework/zend-diactoros symfony/psr-http-message-bridge
Copy after login

In Create apsr-worker.phpfor the Laravel project, and the code modification comes from tobias-kuendig:

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); } }
Copy after login

Runrr serve -vand it’s done.

The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

Summary of Laravel event system usage

Laravel WeChat applet obtains user details and parameterized applet code Extended analysis

The above is the detailed content of Accelerate Laravel applications using RoadRunner. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!