流明: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 添加到您的项目中。您可以尝试安装它看看是否有帮助。