在开发过程中,我们的接口会出现响应速度慢的问题。可能引起的原因是网络IO、服务器CPU处理速度慢、硬盘IO慢、代码复杂度高、数据库慢sql等原因引起,需要先排除清楚原因。在排查慢sql的过程中,需要记录sql的执行条数,执行的秒数,sql的复杂度进行分析,下面是laravel框架记录每次接口请求的所有sql记录。
1、找到app/Providers/EventServiceProvider文件
![](https://img-blog.csdnimg.cn/28f85e91b8154d0caead82e9917e180b.png)
2、在boot方法中添加以下代码:
```
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
DB::listen(
function ($query) {
$tmp = str_replace('?', '"' . '%s' . '"', $query->sql);
$qBindings = [];
foreach ($query->bindings as $key => $value) {
if (is_numeric($key)) {
$qBindings[] = $value;
} else {
$tmp = str_replace(':' . $key, '"' . $value . '"', $tmp);
}
}
$tmp = vsprintf($tmp, $qBindings);
$tmp = str_replace("\\", "", $tmp);
Log::info(' execution time: ' . $query->time . 'ms; ' . $tmp . "\n\t");
}
);
}
```
实测结果:
![](https://img-blog.csdnimg.cn/f82b0ce4c85a4a079e426b6bbd8a6050.png)