huubverbeek / query-watcher
用于监视您Laravel应用程序中的查询的包 -- 包括PHPUnit断言。
v1.0.5
2024-05-23 20:29 UTC
Requires (Dev)
- laravel/pint: ^1.2.1
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5
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 许可证。