在 API 中加载时间非常慢,而在 Laravel 中获取数据

Load time is very slow in API while fetching data in Laravel

我正在使用一个简单的查询来列出 Laravel 中的所有用户。

这是我在 Eloquent 中使用的查询:

$user = User::find(1);

我得到了所有需要的数据,但是得到的时间超过了1.3秒。在 Doctrine 中使用相同的方法时,会在 300 毫秒内加载数据。

Laravel中的Eloquent有问题吗???

转到[您的项目目录]->laravel->app->config.php 并更改

'url' => '127.0.0.1' 而不是 localhost,看看是否有任何区别。

如果这不起作用,您可以安装 Clockwork for laravel,它会为您提供一个时间轴,告诉您为什么要这么长时间。

这是我正在谈论的时间线示例:

这可能会对面临此类问题的人有所帮助。我在 lumen api 后端遇到过类似的问题。我的 lumen api 花了大约 30-35 秒来 return ~1500 个数据,在共享主机上使用原始 php 花了大约 1.2 秒。

我搜索了几个小时才找到问题,但一无所获。 stirido 的回答给了我衡量执行查询时间的想法。执行时间显示 eloquent 方法没有任何问题,问题出在 return 语句中。我遵循的创建 api 的教程使用了类似这样的东西-

return response()->json([$data]);

我将其替换为-

return json_encode($data);

这个简单的更改将我的响应时间从大约 30 秒缩短到大约 2.5 秒。可能是 json() 方法只是一遍又一遍地迭代数据以生成 json,这反过来会造成巨大的响应延迟。因此,如果像我这样的新手正在尝试解决 laravel/lumen 的延迟响应问题,这可能会有所帮助。 json() and json_encode().

参考