在 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().
参考
我正在使用一个简单的查询来列出 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().
参考