如何用RoadRunner加速Laravel应用
发布时间 - 2020-04-02 00:00:00 点击率:次roadrunner是一个用go语言实现的高性能psr-7服务器,你没看错,是go语言实现的。
RoadRunner首先用Go实现了一个高性能的服务器,然后通过goridge IPC把请求转发给多个PHP CLI Worker,Worker会把请求重新封装成PSR-7 Request交给框架进行处理。
推荐:laravel教程
娱乐测试
使用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:
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搞定。
# laravel
# php
# nginx
# 封装
# using
# Go语言
# 并发
# 高性能
# 是一个
# 多个
# 你没
# 会把
# 创建一个
# 配置文件
# 看错
# 转发给
# 实现了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速登录WAP自助建站平台?
在线教育网站制作平台,山西立德教育官网?
如何在自有机房高效搭建专业网站?
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
如何用西部建站助手快速创建专业网站?
Android 常见的图片加载框架详细介绍
Laravel如何使用withoutEvents方法临时禁用模型事件
Laravel如何为API编写文档_Laravel API文档生成与维护方法
JavaScript如何实现类型判断_typeof和instanceof有什么区别
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何使用查询构建器?(Query Builder高级用法)
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何在阿里云虚拟服务器快速搭建网站?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
javascript中闭包概念与用法深入理解
如何快速搭建高效香港服务器网站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何在云指建站中生成FTP站点?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel如何升级到最新版本?(升级指南和步骤)
魔方云NAT建站如何实现端口转发?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
移动端脚本框架Hammer.js
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
php485函数参数是什么意思_php485各参数详细说明【介绍】
高端建站如何打造兼具美学与转化的品牌官网?
高防服务器租用如何选择配置与防御等级?
如何做网站制作流程,*游戏网站怎么搭建?
Java类加载基本过程详细介绍
如何在宝塔面板创建新站点?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
独立制作一个网站多少钱,建立网站需要花多少钱?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
如何快速搭建FTP站点实现文件共享?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
js代码实现下拉菜单【推荐】
Python进程池调度策略_任务分发说明【指导】


test transaction: 0.