流明:1s,Laravel:简单的 api 调用需要 5s?
Lumen : 1s, Laravel : 5s for a simple api call?
所以不久前我在 Laravel 上开始了一个 API 的项目,我想为什么不试试 Lumen。但最后,我想使用 Sanctum、Socialite 等...而且我几乎到处都读到现在性能差异并不大。
所以我将我的代码从 Lumen 迁移到 Laravel,经过一些调整后,一切都像以前一样工作......除了现在一个非常简单的 API 调用需要 5 秒。当然,这可能是我的设置 - wsl2 不是特别快。但是,Lumen 中的同一个调用仍然需要 ~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;
});
}
所以,非常简单的东西。现在,为什么要花这么长时间? ~6000 毫秒。我错过了什么吗?
(更笼统地说,有没有办法从 Laravel 中删除仅 API 不需要的东西?)
先谢谢了。
我没有发现您的代码有任何问题。我想这与 wsl2 读取文件的速度有关。 windows 机器和 Docker 中的 Laravel 有问题。我们将 Swoole 添加到我们的项目中,这对 WSL2 有很大帮助。
Laravel 现在有一个名为 Octane 的第一方包,可以将 Swoole 添加到您的项目中。您可以尝试安装它看看是否有帮助。
所以不久前我在 Laravel 上开始了一个 API 的项目,我想为什么不试试 Lumen。但最后,我想使用 Sanctum、Socialite 等...而且我几乎到处都读到现在性能差异并不大。
所以我将我的代码从 Lumen 迁移到 Laravel,经过一些调整后,一切都像以前一样工作......除了现在一个非常简单的 API 调用需要 5 秒。当然,这可能是我的设置 - wsl2 不是特别快。但是,Lumen 中的同一个调用仍然需要 ~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;
});
}
所以,非常简单的东西。现在,为什么要花这么长时间? ~6000 毫秒。我错过了什么吗?
(更笼统地说,有没有办法从 Laravel 中删除仅 API 不需要的东西?)
先谢谢了。
我没有发现您的代码有任何问题。我想这与 wsl2 读取文件的速度有关。 windows 机器和 Docker 中的 Laravel 有问题。我们将 Swoole 添加到我们的项目中,这对 WSL2 有很大帮助。
Laravel 现在有一个名为 Octane 的第一方包,可以将 Swoole 添加到您的项目中。您可以尝试安装它看看是否有帮助。