[英]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.