Lumen:1s,Laravel:5s用于一个简单的api调用



所以不久前我在Laravel上开始了一个API项目,我想为什么不给Lumen一个机会。但最终,我想使用Sanctum、Socialite等……我读到很多地方都说,现在的表现差距并没有那么大。

所以我把我的代码从Lumen迁移到Laravel,经过一些调整,一切都像以前一样。。。除了现在一个非常简单的API调用需要5秒。当然,这可能是我的设置——wsl2并不是特别快。但是,在鲁门的同一次呼叫仍然需要大约1000毫秒。

Route::post('register', [AuthController::class, 'register']);

控制器:

public function register(Request $request): JsonResponse {
$this->validate($request, [
'phone' => 'required|string|phone',
'phone_country' => 'required_with:phone',
]);
$phone = phone($request->get('phone'), [$request->get('phone_country')]);
try {
$user = User::createByPhone($phone);
return response()->json(['user' => $user->id, 'message' => 'SMS_SENT'], 201);
} catch (Exception $e) {
return response()->json(['message' => 'User Registration Failed - ', 'error' => $e], 409);
}
}

模型中的功能:

public static function createByPhone($phone) {
return DB::transaction(function () use ($phone) {
$user = User::create();
$user->phoneNumbers()->create([
'did' => $phone
]);
return $user;
});
}

所以,非常简单的东西。为什么要花这么长时间~6000ms。我是不是错过了什么?

(更一般地说,有没有一种方法可以从Laravel中削减那些仅API不需要的东西?(

谢谢。

我认为您的代码没有任何真正的错误。我想这与wsl2读取文件的速度有关。我们在Docker中遇到了windows机器和Laravel的问题。我们在我们的项目中添加了Swool,这对WSL2有很大帮助。

Laravel现在有一个名为Octane的第一方包,可以将Swoole添加到您的项目中。你可以试着安装它,看看它是否有帮助。

最新更新