【问题标题】:Test query execution time in laravel在 laravel 中测试查询执行时间
【发布时间】:2017-06-04 08:40:37
【问题描述】:

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

有没有可能让它不依赖于其他东西?

【问题讨论】:

  • 在您的数据库配置文件中启用数据库日志记录,它会在日志中告诉您执行的每个单独查询

标签: php mysql laravel phpunit


【解决方案1】:

最古老的方法是最好的:

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

【讨论】:

  • 作为旁注,在传统的单元测试中,你永远不应该接触你的数据库。单元测试用于测试小的、无状态的功能。数据库就是保存状态,所以在集成测试中测试你的数据库。
【解决方案2】:

您可以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 ;)

【讨论】:

【解决方案3】:

由于 Laravel 5.2 listen 已更改为只有一个参数:

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

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2018-09-20
      • 2013-09-01
      • 1970-01-01
      • 2014-11-26
      • 2016-08-18
      • 2016-01-13
      相关资源
      最近更新 更多