Laravel 里面如何查看生产线上每条 SQL 语句以及运行了多长时间?

laravel里面如何查看生产线上每条SQL语句以及运行了多长时间?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

app/Providers/AppServiceProvider.phpboot()方法

      DB::listen(function ($query) {
        $sql = $query->sql;
        $bindings = $query->bindings;
        $time = $query->time;
        //写入sql
        if ($bindings) {
            file_put_contents('.sqls', "[" . date("Y-m-d H:i:s") . "]" . $sql . "\r\nparmars:" . json_encode($bindings, 320) . "\r\n\r\n", FILE_APPEND);
        } else {
            file_put_contents('.sqls', "[" . date("Y-m-d H:i:s") . "]" . $sql . "\r\n\r\n", FILE_APPEND);
        }
    });

这个代码是我之前抄百度的,后面没用了,你可以复制这个。

(代码优化你会的,这个代码不好)

3年前 评论
讨论数量: 11

file 问百度不香吗...

3年前 评论
臭鼬 3年前

app/Providers/AppServiceProvider.phpboot()方法

      DB::listen(function ($query) {
        $sql = $query->sql;
        $bindings = $query->bindings;
        $time = $query->time;
        //写入sql
        if ($bindings) {
            file_put_contents('.sqls', "[" . date("Y-m-d H:i:s") . "]" . $sql . "\r\nparmars:" . json_encode($bindings, 320) . "\r\n\r\n", FILE_APPEND);
        } else {
            file_put_contents('.sqls', "[" . date("Y-m-d H:i:s") . "]" . $sql . "\r\n\r\n", FILE_APPEND);
        }
    });

这个代码是我之前抄百度的,后面没用了,你可以复制这个。

(代码优化你会的,这个代码不好)

3年前 评论

@lyxxxh 其实是想看还有没有别的答案,估计大家都是这样做的,那就这样吧

3年前 评论

那就看你是想用航母来实现还是想用滑翔机来实现了! 航母:/laravel/telescope,itsgoingd/clockwork 滑翔机:楼上那些,监听Illuminate\Database\Events\QueryExecuted

3年前 评论

放一样的地方 然后用show profile 查看执行时间

\DB::listen(
            function ($sql) {
                foreach ($sql->bindings as $i => $binding) {
                    if ($binding instanceof \DateTime) {
                        $sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
                    } else {
                        if (is_string($binding)) {
                            $sql->bindings[$i] = "'$binding'";
                        }
                    }
                }

                // Insert bindings into query
                $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);

                $query = vsprintf($query, $sql->bindings);

                // Save the query to file
                $logFile = fopen(
                    storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
                    'a+'
                );
                fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
                fclose($logFile);
            }
        );
3年前 评论
zhanghaidi

get一下

3年前 评论

看访问量大不大吧,你们直接写文件,想害死别人

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!