设置如下的路由
<?php
use Webman\Route;
use App\Middleware\Authenticate;
Route::post('/admins/login', [App\Controllers\AdminController::class,'login'])->name('admins.login');
Route::group('',function (){
Route::post('/admins/logout', [App\Controllers\AdminController::class,'logout'])->name('admins.logout');
// admins 资源路由
Route::resource('/admins', App\Controllers\AdminController::class);
})->middleware([
Authenticate::class
]);
Route::disableDefaultRoute();
通过 php webman route:list
查看路由List
在访问 POST /admins/logout
时 有很大机率 response 里的body 为变成 GET /admins
里的数据
如果 访问一次 GET /admins
再访问 POST /admins/logout
这个机率又会提高
我不知道是 路由的问题 还是 response 响应的问题
POST /admins/logout
返回结果如下
正常应该返回
AdminController 部分代码如下
public function logout(Request $request) {
$data = [
'some_key' => 'logout => 的body 数据'
];
return $this->rsp($data,'注销成功!');
}
public function index(Request $request)
{
$builder = $this->model->orderBy('created_at', 'desc');
$fields = ['id','status','created_at','updated_at'];
if(count($fields)) {
$builder->select(...$fields);
}
$per_page = $request->filled('per_page') ? $request->input('per_page') : 2;
$data = $builder->paginate(intval($per_page));
return $this->rsp($data);
}
我不知道 是我代码的问题 还是 route 或 response 的问题
各位帮我分析一下 造成这个情况的 可能的原因
通过 requests.route 里面的信息来看 应该可以排除掉路由的问题
会不会是启动了2个webman,有时候请求跑到了另外一个webman,结果和预期不一致?
没有 只启动了一个webman 我在想是不是 Response 用到上次的数据了(长贮内存 或 多processe)只是猜测的
把设置
app.controller_reuse
设置为false
返回结果就正常了
@walkor
controller_reuse 复用开启 是不是在Controller 中引入Trait 也会复用?
controller_reuse 是否 开启 对应用的性能影响大么?
会复用。
相对于业务来说,关闭复用对性能影响可以忽略。
感谢 老大 回复
上述 返回结果 问题 是不是因为 复用开启才导致的?能否详细说明一下
我现在的理解是第二次请求中 Response 被复用了 如上次请求 Response 中的xx_key = 1 第二次请求没有重置或xx_key ,那么 xx_key 还是会出现在第二次请求的 Response
你的理解正确
控制器use Trait也受 controller_reuse 开启的影响吗?
恳请解惑!
Trait本身就是代码片段,Trait本身没有影响不影响的说法。
谢谢老大,懂了!