在传统的 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.pngcd到laravel程序根目录下
使用 Composer 安装laravel-swoole:
$ composer require swooletw/laravel-swoole
$ php artisan vendor:publish --tag=laravel-swoole
'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
添加反向代理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,可以愉快的访问了
测试报告(垃圾服务器+小水管,大佬勿喷)
注意事项:
参考文章