huubverbeek/query-watcher

用于监视您Laravel应用程序中的查询的包 -- 包括PHPUnit断言。

v1.0.5 2024-05-23 20:29 UTC

This package is auto-updated.

Last update: 2024-09-23 21:19:10 UTC


README

QueryWatcher

QueryWatcher 是一个用于 Laravel 的 composer 包,允许您监控和分析应用程序运行期间执行的数据库查询。它提供跟踪慢查询和识别重复查询的方法。

安装

您可以通过运行以下命令使用 Composer 安装 QueryWatcher 包

composer require huubverbeek/query-watcher

需求

此包需要 php 8.1 或更高版本。

使用方法

要开始监视查询,您可以使用 QueryWatcher 门面提供的 watch 方法

use HuubVerbeek\QueryWatcher\Facades\QueryWatcher;

QueryWatcher::watch();

这将启用查询监视并开始收集执行的查询。

所有查询

要检索所有查询,您可以使用 queries 方法

$allQueries = QueryWatcher::queries();

慢查询

要检索慢查询(执行时间超过一定时间的查询),您可以使用 slowQueries 方法

$slowQueries = QueryWatcher::slowQueries();

您还可以使用 setSlowThreshold 方法设置自定义的慢查询阈值(默认为 1 秒)

QueryWatcher::setSlowThreshold(2.0); // Set slow threshold to 2 seconds

重复查询

要识别重复查询(具有相同 SQL 语句和绑定器的查询),您可以使用 duplicateQueries 方法

$duplicateQueries = QueryWatcher::duplicateQueries();

断言

QueryWatcher 包还提供断言方法以简化测试。这些方法允许您根据执行的查询断言某些条件是否满足。

  • assertHasDuplicateQueries:断言执行了重复查询。
  • assertNoDuplicateQueries:断言没有执行重复查询。
  • assertHasSlowQueries:断言执行了慢查询。
  • assertNoSlowQueries:断言没有执行慢查询。

以下是在测试用例中使用断言的示例

public function test_queries()
{
    QueryWatcher::watch();

    // Code that executes queries

    QueryWatcher::assertNoDuplicateQueries();
    
    QueryWatcher::assertNoSlowQueries();
}

贡献

如果您遇到任何问题或对改进有建议,请随时在 GitHub 仓库中打开问题或提交拉取请求。

许可证

QueryWatcher 包是开源软件,采用 MIT 许可证。