laravel服务器提速

前提

  • 服务器 laravel6 升级到 laravel9
  • 只有接口, 改动不会太大
  • Octane 启用
  • Jenkins 方式部署
  • 宝塔管理

1.路由升级

  • 修改 RouteServiceProvider
// 旧 
protected $namespace = 'App\Http\Controllers';

// 新
protected $namespace = '';
  • 修改 routes/api.php
// 旧
Route::get('/link_test/index', 'LinkTestController@index');
Route::get('/link_test/root_list', 'LinkTestController@root_list');

// 新
Route::prefix('link_test')->group(function () {
                   Route::controller(\App\Http\Controllers\Api\LinkTestController::class)->group(function () {
        Route::get('/index', 'index');
        Route::get('/root_list', 'root_list');
    });
});

// 单个
Route::post('/add/test', [\App\Http\Controllers\Api\AddTestController::class, 'category']);

composer

  • 没有提到的点开 packagist输入包查询
# 移除
fideloper/proxy
tymon/jwt-auth

# 修改
fzaninotto/faker 为 fakerphp/faker

# 增加
laravel/octane
laravel/sanctum

Octane服务器

升级宝塔面板

  • 安装 php8.1
  • 安装扩展
  • 安装 supervisor

supervisor配置

# 打开面板添加守护进程
# 命令输入
/www/server/php/81/bin/php -d variables_order=EGPCS /www/wwwroot/learn/blog/artisan octane:start --host="0.0.0.0" --port=8003 --workers=8 --max-requests=100000 --task-workers=4

# 启动测试网站

Nginx 修改重写规则

# 废弃
location /e33 {
    try_files $uri $uri/ /index.php?$query_string;
}

    location / {
        try_files $uri $uri/ @octane;
    }

     location @octane {
        set $suffix "";

         if ($uri = /index.php) {
            set $suffix ?$query_string;
        }

        proxy_set_header Host $host;
        proxy_set_header SERVER_PORT $server_port;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # IF https
        proxy_set_header HTTPS "on";

        proxy_pass http://127.0.0.1:8003$suffix;
    }

Jenkins修改

  • 在配置最后添加
# supervisor 关闭端口
/www/wwwroot/default/kill_port.sh 8003

# supervisor 重启
/www/server/panel/pyenv/bin/supervisorctl -c /etc/supervisor/supervisord.conf restart learn:learn_00

# 6.0 接口是 get 请求, 下面这个post请求居然能接收到数据
$request->post('type', 1)

# 9.0 升级测试为空白, 修改
$request->input('type', 1)

结语

  • 测试由原来的 40ms 变为现在的 20ms 上下
  • 网址
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10
mouyong

考虑用用 github.com/mouyong/laravel-octane-... 不,不需要额外安装扩展。支持 API 加速、TCP 等各种通讯协议的通讯。使用简单便捷。

2年前 评论

还在用5的,不敢升

2年前 评论
running8

我也是在用宝塔,PHP8.1 安装 fileinfo 扩展总是装不上

2年前 评论
wozailu (楼主) 2年前
running8 (作者) 2年前
wozailu (楼主) 2年前

artisan serve --host=127.0.0.1 --port=8003 哈哈哈哈哈

2年前 评论
nff93

第一次打开网站,用时 3.36s ,上海电信

2年前 评论

装了 laravel octane 结果启了个PHP内置服务器.... 认真的么?

2年前 评论
wozailu (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!