【发布时间】:2017-06-04 08:40:37
【问题描述】:
如何在 laravel/phpunit 中测试查询需要多长时间执行?
有没有可能让它不依赖于其他东西?
【问题讨论】:
-
在您的数据库配置文件中启用数据库日志记录,它会在日志中告诉您执行的每个单独查询
如何在 laravel/phpunit 中测试查询需要多长时间执行?
有没有可能让它不依赖于其他东西?
【问题讨论】:
最古老的方法是最好的:
$start = microtime(true);
// Execute the query
$time = microtime(true) - $start;
【讨论】:
您可以listen 执行这样的查询并将结果记录到storage/logs/laravel.log。
\DB::listen(function ($sql, $bindings, $time) {
\Log::info($sql, $bindings, $time);
});
您可以只使用$time,但我记录了$sql, $bindings, $time 以完成。
你可以把它放在你的AppServiceProvider中。
更新:
在 Laravel 版本 > 5.5 中,此方法在文档中记录为 listening for query events ;)
【讨论】:
$time 变量的单位吗?
由于 Laravel 5.2 listen 已更改为只有一个参数:
\DB::listen(function ($query) {
// $query->sql
// $query->bindings
// $query->time
});
【讨论】:
您可以从 Laravel 6.x 开始使用 ddd($someVar) 助手。
Queries 选项卡描述了在ddd() 之前执行的每个查询
【讨论】: