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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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);
        }
    });

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

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

4年前 评论
讨论数量: 11

file 问百度不香吗...

4年前 评论
臭鼬 4年前

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);
        }
    });

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

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

4年前 评论

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

4年前 评论

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

4年前 评论

放一样的地方 然后用 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);
            }
        );
4年前 评论
zhanghaidi

get 一下

4年前 评论

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

4年前 评论