使用RoadRunner 加速 Laravel 应用
这篇文章主要介绍了关于使用RoadRunner 加速 Laravel 应用,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
RoadRunner是一个用Go语言实现的高性能PSR-7服务器,你没看错,是Go语言实现的。
RoadRunner首先用Go实现了一个高性能的服务器,然后通过goridge IPC把请求转发给多个PHP CLI Worker,Worker会把请求重新封装成PSR-7 Request交给框架进行处理。
娱乐测试
使用siege测试Laravel的Welcome页面,250个并发用户,持续30秒,对比Nginx + FPM和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.
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
如何加速Laravel应用
RoadRunner安装
RoadRunner已经提供了预编译的执行文件,下载对应平台的版本即可,配置文件可用RoadRunner提供的:Using RoadRunner.
Laravel配置
安装依赖:
composer require spiral/roadrunner zendframework/zend-diactoros symfony/psr-http-message-bridge
在Laravel项目创建一个psr-worker.php
,代码修改来自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 serve -v
搞定。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Laravel微信小程序获取用户详细信息及带参数小程序码扩展的分析
以上是使用RoadRunner 加速 Laravel 应用的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

在使用CraftCMS开发网站时,常常会遇到资源文件缓存的问题,特别是当你频繁更新CSS和JavaScript文件时,旧版本的文件可能仍然被浏览器缓存,导致用户无法及时看到最新的更改。这个问题不仅影响用户体验,还会增加开发和调试的难度。最近,我在项目中遇到了类似的困扰,经过一番探索,我找到了wiejeben/craft-laravel-mix这个插件,它完美地解决了我的缓存问题。

Laravel 提供了一个全面的 Auth 框架,用于实现用户登录功能,包括:定义用户模型(Eloquent 模型)创建登录表单(Blade 模板引擎)编写登录控制器(继承 Auth\LoginController)验证登录请求(Auth::attempt)登录成功后重定向(redirect)考虑安全因素:哈希密码、防 CSRF 保护、速率限制和安全标头。此外,Auth 框架还提供重置密码、注册和验证电子邮件等功能。详情请参阅 Laravel 文档:https://laravel.com/doc
