swoole怎么加速php,LaravelS通过Swoole加速Laravel/Lumen详解

LaravelS - 站在巨人的肩膀上

本文主要介绍了LaravelS通过Swoole加速Laravel/Lumen的相关内容,关于:rocket: 通过Swoole来加速 Laravel/Lumen,其中的S代表Swoole,速度,高性能。

特性

高性能的Swoole

内置Http服务器

常驻内存

平滑重启

同时支持Laravel与Lumen,兼容主流版本

简单,开箱即用

如果对你有帮助,Star Me LaravelS

要求

依赖

说明

>= 5.5.9

>= 1.7.19 推荐最新的稳定版 从2.0.12开始不再支持PHP5

Gzip[可选的]

zlib , 检查本机libz是否可用 ldconfig -p|grep libz

安装

# 在你的Laravel/Lumen项目的根目录下执行

composer require "hhxsv5/laravel-s:~1.0" -vvv

# 确保你的composer.lock文件是在版本控制中

2.添加service provider

Laravel : 修改文件 config/app.php

'providers' => [

//...

Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class,

],

Lumen : 修改文件 bootstrap/app.php

$app->register(Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class);

3.发布配置文件

php artisan laravels publish

特别情况 : 你不需要手动加载配置 laravels.php ,LaravelS底层已自动加载。

// 不必手动加载,但加载了也不会有问题

$app->configure('laravels');

4.修改配置 config/laravels.php :监听的IP、端口等,请参考 配置项 。

运行

php artisan laravels {start|stop|restart|reload|publish}

命令

说明

start

启动LaravelS,展示已启动的进程列表 ps -ef|grep laravels

stop

停止LaravelS

restart

重启LaravelS

reload

平滑重启所有worker进程,这些worker进程内包含你的业务代码和框架(Laravel/Lumen)代码,不会重启master/manger进程

publish

发布配置文件到你的项目中 config/laravels.php

与Nginx配合使用

upstream laravels {

server 192.168.0.1:5200 weight=5 max_fails=3 fail_timeout=30s;

#server 192.168.0.2:5200 weight=3 max_fails=3 fail_timeout=30s;

#server 192.168.0.3:5200 backup;

}

server {

listen 80;

server_name laravels.com;

root /xxxpath/laravel-s-test/public;

access_log /yyypath/log/nginx/$server_name.access.log main;

autoindex off;

index index.html index.htm;

# Nginx处理静态资源,LaravelS处理动态资源。

location / {

try_files $uri @laravels;

}

location @laravels {

proxy_http_version 1.1;

# proxy_connect_timeout 60s;

# proxy_send_timeout 60s;

# proxy_read_timeout 120s;

proxy_set_header Connection "keep-alive";

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_pass http://laravels;

}

}

监听事件

通常,你可以在这些事件中重置或销毁一些全局或静态的变量,也可以修改当前的请求和响应。

laravels.received_request 将 swoole_http_request 转成 Illuminate\Http\Request 后,在Laravel内核处理请求前。

// 修改`app/Providers/EventServiceProvider.php`, 添加下面监听代码到boot方法中

// 如果变量$exents不存在,你也可以调用\Event::listen()。

$events->listen('laravels.received_request', function (\Illuminate\Http\Request $req) {

$req->query->set('get_key', 'hhxsv5');// 修改querystring

$req->request->set('post_key', 'hhxsv5'); // 修改post body

});

laravels.generated_response 在Laravel内核处理完请求后,将 Illuminate\Http\Response 转成 swoole_http_response 之前(下一步将响应给客户端)。

$events->listen('laravels.generated_response', function (\Illuminate\Http\Request $req, \Symfony\Component\HttpFoundation\Response $rsp) {

$rsp->headers->set('header-key', 'hhxsv5');// 修改header

});

在你的项目中使用 swoole_http_server 实例

/**

* @var \swoole_http_server

*/

$swoole = app('swoole');// Singleton

var_dump($swoole->stats());

注意事项

推荐通过 Illuminate\Http\Request 对象来获取请求信息,兼容$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_REQUEST, 不能使用 $_SESSION、$_ENV。

public function form(\Illuminate\Http\Request $request)

{

$name = $request->input('name');

$all = $request->all();

$sessionId = $request->cookie('sessionId');

$photo = $request->file('photo');

$rawContent = $request->getContent();

//...

}

推荐通过返回 Illuminate\Http\Response 对象来响应请求,兼容echo、vardump()、print_r(), 不能使用 函数像exit()、

die()、header()、setcookie()、http_response_code()。

public function json()

{

return response()->json(['time' => time()])->header('header1', 'value1')->withCookie('c1', 'v1');

}

你声明的全局、静态变量必须手动清理或重置。

无限追加元素到静态或全局变量中,将导致内存爆满。

// 某类

class Test

{

public static $array = [];

public static $string = '';

}

// 某控制器

public function test(Request $req)

{

// 内存爆满

Test::$array[] = $req->input('param1');

Test::$string .= $req->input('param2');

}

待办事项

针对MySQL/Redis的连接池。

包装MySQL/Redis/Http的协程客户端。

针对Swoole 2.1+ 自动的协程支持。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11) 本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。 阅读详情

相关推荐

多传感器标定全栈系统学习教程

无论是激光雷达(Lidar)、毫米波雷达(Radar)、相机(Camera)还是惯导(IMU),传感器之间的精确标定直接决定了系统的可靠性与性能。本文将以系统化的视角,梳理多传感器标定的核心知识体系,并分享一套覆盖全栈技术的学习路径。Calibration)是实现点云与图像融合的前提,而雷达与车辆的标定(Radar2Car)则是精准速度估计的关键。:Lidar2Car、Camera2Car的快速标定流程,标定板布置规范。:从单传感器标定入手(如相机内参),逐步过渡到多传感器联合标定。

weixin_41792788的博客 885

Laravel如何优雅的使用Swoole

背景 正在做一个智能家居的项目(钱低的吓死人怎么办),接收下位机(就是控制智能家居硬件模块的HUB)协议解析,Web端维护硬件状态,利用APP交互。由于下位机数据是发送到服务器的XXX端口,所以必须对XXX端口进行监听。其实和聊天室的概念差不多,研究了一下workerman、swoole和其他几个开源的项目,决定采用swoole。 关于php解析下位机的16进制协议,其实相当之扯蛋,要是你最好...

weixin_30252709的博客 769

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1248

Laravel-swoole组件

使用laravel自带的方法artisan(真的很好用)创建 swoole 命令文件执行会在目录下生成Swoole文件,完整源码如下:php/***//***//***//***//***//***//***/break;break;break;/*** 开启websocket*///SWOOLE_SSL 需要ssl才加#监听WebSocket连接打开事件// 验证链接= '9502')return;});

爱吃五花肉EMin的博客 2102

laravel-admin 使用laravels时,excel导出异常的问题

预处理 新建自定义异常类 <?php namespace App\Exceptions; use Throwable; use Exception; class SwooleExitException extends Exception { protected $response; public function __construct($response,$message = "", $code = 0, Throwable $previous = null) {

weixin_36211383的博客 788

laravel使用swoole的websocket

使用laravel的command来创建swoole进程 使用laravel的artisan命令生成swoole.phpphp artisan make:command swoole 修改swoole.php类的内容如下: &amp;lt;?php namespace App\Console\Commands; use Illuminate\Console\Command; u...

小明的博客 8981

基于 LaravelS 实现高性能 HTTP 服务器

LaravelSlaravel的第三方扩展包swoole 我们可以通过这个扩展包轻松在 Laravel 应用中实现上述特性。接下来,我们就来演示如何通过这个扩展包在 Laravel 框架中基于 Swoole 的这些特性来实现高性能 Laravel 应用。 需要声明的是,基于 Swoole 特性提升应用性能只是提高应用整体性能的一种方式,不是唯一方式。LaravelS 也不是在 Laravel...

谢谢你,慌乱了我的年华 4027

php使用swoole加速lumen项目-laravelS实战

参考:https://www.phpmianshi.com/?id=195 背景 公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目 https://github.com/hhxsv5/laravel-s 下面我们来实战一下 环境介绍 php7.2 centos7 swoole4.5.7 lumen5.8 1.安装 源码安装 wgethttps://github.com/...

tiancityycf的专栏 958

lumen 项目根目录_使用Laravel/Lumen的图文详解

这次给大家带来使用Laravel/Lumen的图文详解使用Laravel/Lumen的注意事项有哪些,下面就是实战案例,一起来看一下。LaravelS - 站在巨人的肩膀上本文主要介绍了LaravelS通过Swoole加速Laravel/Lumen的相关内容,关于:rocket: 通过Swoole加速 Laravel/Lumen,其中的S代表Swoole,速度,高性能。特性高性能的Swoole...

weixin_39976251的博客 651

LaravelS - 基于Swoole加速Laravel/Lumen - 带你飞

LaravelS

weixin_34352005的博客 1595

laravel-s加速swoole

通过Composer安装(packagist)。必须是3.7版本3.5会报错 composer require "hhxsv5/laravel-s:~3.7.0" # 确保你的composer.lock文件是在版本控制中 2.注册Service Provider(以下两步二选一)。 Laravel: 修改文件config/app.phpLaravel 5.5+支持包自动发现,你应该跳过这步 'providers' => [//...Hhxsv5\LaravelS\Illuminate..

飞鱼计划 3275

LaravelS 性能优化:10个技巧让你的应用速度提升300%

LaravelSLaravel/LumenSwoole 之间的开箱即用适配器,它能显著提升 PHP 应用的性能。本文将分享10个实用的 LaravelS 性能优化技巧,帮助你充分发挥 Swoole 的优势,让应用响应速度提升300%。 ## 1. 合理配置 Worker 进程数量 Worker 进程数量是影响性能的关键因素。根据服务器 CPU 核心数来调整 `worker_num`

gitblog_00875的博客 1070

easyswoole和mixphp_2018,请问基于swoole的框架哪个更合适?

都会thinkphp3.2还是都会thinkphp5啊?如果是5的话那么可以试试Swoole加速Laravel项目LaravelS(GitHub),毕竟tp5'借鉴'了laravel的很多概念和用法,应该学习成本蛮低的。纯api的话可以用lumenLaravelS也是支持Lumen的。并且LaravelS已经基于Swoole实现了Websocket和异步任务。Swoft的注释路由AOP实体Be...

weixin_34512894的博客 376

【亲测免费】 Laravel Swoole 安装与使用教程

Laravel Swoole 是一个用于增强 Laravel 应用性能的扩展包,它利用了 Swoole 的异步非阻塞 I/O 模型来加速你的应用程序。以下是安装和使用的详细步骤。 ## 1. 项目目录结构及介绍 ```markdown laravel-swoole/ ├── config/ # 配置文件目录 │ └── swoole.php ...

gitblog_00498的博客 744

swoole加速php框架

一、swoole加速laravel框架 1、下载laravel框架 composer create-project --prefer-dist laravel/laravel laravel 2、新建swoole.php文件 <?php define('LARAVEL_START', microtime(true)); require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap

yshir 782

查看swoole当前版本

php -r ‘echo SWOOLE_VERSION;’

appcanLiYunLong的博客 1680

thinkphp6 think-swoole websocket发送完成和常用方法和客户端回调

swoole.websocket.Connect建议定义;每个客户端都会先建立握手,这里是必经之处。比如在这里记录你自己程序用户与客户端的连接ID(fd)等。 swoole.websocket.Test是自定义的test消息接收事件,该类事件定义的事件类 是用于接收客户端发送过来的消息并自行处理后续逻辑。该类事件可以定义任意个,比如一个项目可以有聊天、客服、直播等多种实时通讯场景,你可以分别定义不...

a603423130的博客 7043

php fpm swoole 异步,基于 SwooleLaravel 中实现异步事件监听及处理

基于 SwooleLaravel 中实现异步事件监听及处理由 学院君 创建于1年前, 最后更新于 1年前版本号 #19126 views6 likes2 collects这一篇教程我们直接以 hhxsv5/laravel-s 扩展包为例,演示如何在 Laravel 项目中基于 Swoole 实现事件监听。系统自带事件首先我们来看一些扩展包自带的系统事件,这些系统事件又可以进一步划分为 Lar...

weixin_39860108的博客 416

swoole怎么加速php,如何通过swoole加速laravel的问题

这篇文章主要介绍了关于如何使用swoole加速laravel,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下再来复习一下吧,导致 php 慢的各种因素中解析性语言的特性可以说是罪魁祸首,再加上,每次请求完都释放请求时所加载的全部文件,因此也就显得更慢了。后来我们有了 opcache,使用这个的话,请求时间大概会缩短到原来的一半,但是我们会发现其实花的时间看起来还是很多。这是为什么呢?...

weixin_34061440的博客 242

php网站 被 黑_为什么Swoole可以加速php

前言最近在研究Swoole,原来一直听别人在说Swoole可以加速,一直都是懵逼的。在研究了Swoole之后,我有了一些自己的理解。PHP-CGI 的黑历史对于 PHP 处理网络请求,大家基本上也都是在用 CGI 的方式来做的。那么,什么是 CGI 呢。CGICGI,全称 Common Gateway Interface,中文称作“公共网关接口”。也许有很多人认为 CGI 是一个程序,没错,曾经的...

weixin_39615991的博客 178
上一篇: oracle提高like速度,oracle中like如何优化?
下一篇: oracle外部表报错ora29400,select外部表报错ora-29913,ora-29400
无知的坚强
博客等级 码龄8年 32粉丝 2149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值