laravel-swoole在linux下的安装与配置,以及与opcache的性能比较

在传统的 PHP 生命周期中,像 Laravel 这样的框架, 浪费了大量的时间去创建和销毁资源
因此如果我们利用 Swoole 内置一个应用级别的 Server, 并且所有脚本文件在加载一次之后便可以保存在内存中。
Jemeter并发测试相比较opcache插件能提升3-5倍,比较原生php7的话可以提升5-10倍,文末贴出测试报告。
涉及到Mysql查询的话性能提升确实有限(双核4G配置2M带宽并发量在1000-2000左右,复杂查询的话甚至达不到150),非mysql查询,例如生成图形验证码,有大幅度的性能提升(上述配置可以并发量2400+)

1、安装swooletw/laravel-swoole

需要在Linux服务器下安装swoole扩展,宝塔面板的操作比较简单

image.png

cd到laravel程序根目录下
使用 Composer 安装laravel-swoole:

$ composer require swooletw/laravel-swoole

本人项目中使用的是laravel 5.8,可以跳过providers的配置,
运行以下命令,生成配置文件swoole_http.php和swoole_websocket.php

$ php artisan vendor:publish --tag=laravel-swoole

修改swoole_http.php配置文件(仅供参考)

'server' => [
……
        'host' => env('SWOOLE_HTTP_HOST', '0.0.0.0'),
        'port' => env('SWOOLE_HTTP_PORT', '9200'),
……
       'reactor_num' => env('SWOOLE_HTTP_REACTOR_NUM', 2*swoole_cpu_num()),
       'worker_num' => env('SWOOLE_HTTP_WORKER_NUM', 2*swoole_cpu_num()),
       'task_worker_num' => env('SWOOLE_HTTP_TASK_WORKER_NUM', 2*swoole_cpu_num()),
]

可以试着运行下列命令

php artisan swoole:http start

看到以下信息表示运行成功

Starting swoole http server...
Swoole http server started: <http://0.0.0.0:9200>

2、配置守护进程(Supervisor)

运行目录是laravel的根目录
启动文件填写php程序


image.png

3、配置站点和反向代理

3.1、添加站点

填写域名和根目录,php版本处设置为纯静态


添加站点
3.2、配置反向代理

点击添加反向代理按钮


添加反向代理01

填写目标URL为 http://0.0.0.0:9200,发送域名 $host


添加反向代理02

配置反向代理的跨域,修改配置文件
image.png

image.png

添加的文件内容如下

 add_header "Access-Control-Allow-Origin" "*"; #设置允许跨域
 add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS"; #设置允许通过跨域方法
 add_header "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept,x-access-token"; #设置允许跨域的header

重启一下Nginx,可以愉快的访问了
测试报告(垃圾服务器+小水管,大佬勿喷)

压力测试报告

注意事项:

禁用函数
exit/die 相关
由于 Swoole 中禁用 exit/die 函数,所以在 Laravel 中也不能使用它们,以及与之相关的 dd 函数。
请求相关
不要使>用 $_GET/$_POST/$_FILES/$_COOKIE/$_REQUEST/$_SESSION/$GLOBALS/$_ENV 之类的超全局变量,统一通过 Illuminate\Http\Request 对象获取请求数据。
另外,Swoole 限制 GET 请求头长度不能超过 2KB,POST 请求数据长度也会通过 package_max_length 配置进行限制,默认是 2M。
响应相关
统一通过 Illuminate\Http\Response 返回响应,不要使用 header()/setcookie()/http_response_code() 之类的函数,以免引起异常问题。
flush 相关
swoole_http_response 不支持 flush 函数,所以不要使用与之相关的 flush/ob_flush/ob_end_flush/ob_implicit_flush 等函数。

参考文章

使用 Swoole 来加速你的 Laravel 应用 | PHP 技术论坛 https://learnku.com/php/t/10939/use-swoole-to-speed-up-your-laravel-application
Swoole 驱动的 Laravel 应用优化原理及注意事项 | 学院君(原Laravel学院) https://xueyuanjun.com/post/19832.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容