Laravel 开发的程序运行较慢,在优化的过程中需要打印慢查询 SQL 语句以便排查,方法如下:
在 \app\Providers\AppServiceProvider.php 文件的 boot 方法中添加下面的代码,不要忘记引用 DB 类和 Log 类。
DB::listen(function($query){
$sql = $query->sql;
$bingings = $query->bindings;
$time = $query->time;
Log::debug(compact('sql','bingings','time'));
});
还可以打印执行时间超过指定值的 SQL 语句:
DB::listen(function($query){
$sql = $query->sql;
$bingings = $query->bindings;
$time = $query->time;
if($time > 5){
Log::debug(compact('sql','bingings','time'));
}
});
效果: