繁体   English   中英

在 laravel 中测试查询执行时间

[英]Test query execution time in laravel

如何在 laravel/phpunit 中测试执行查询需要多长时间?

是否有可能使它不依赖于其他东西?

最古老的方式是最好的方式:

$start = microtime(true);
// Execute the query
$time = microtime(true) - $start;

由于 Laravel 5.2 的listen已更改为只接受一个参数:

\DB::listen(function ($query) {
     // $query->sql
     // $query->bindings
     // $query->time
});

文档: https ://laravel.com/docs/5.2/database

您可以像这样listen执行查询并将结果记录在storage/logs/laravel.log中。

\DB::listen(function ($sql, $bindings, $time) {
    \Log::info($sql, $bindings, $time);
});

你可以只使用$time ,但我记录$sql, $bindings, $time来完成。

你可以把它放在你的AppServiceProvider中。

更新:

在 Laravel 版本 > 5.5 中,此方法在文档中记录为侦听查询事件;)

你可以从 Laravel 6.x 开始使用ddd($someVar)助手。

有一个Queries选项卡,它描述了在ddd()之前执行的每个查询

这就是我在 laravel 9x 中的做法。

打开app/Providers/AppServiceProvider.php将代码片段放在下面的boot method中:

DB::listen(function ($query) {
    Log::info($query->sql);     // the query being executed
    Log::info($query->time);    // query time in milliseconds
});

然后检查日志文件以获取storage/logs/laravel.log中的详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM