web-dev-qa-db-ja.com

laravelでクエリ実行時間をテストする

Laravel/phpunitでクエリの実行にかかった時間をテストする方法は?

他に依存しないようにすることは可能ですか?

13
changer

最も古い方法が最良の方法です。

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

Laravel 5.2から、listenは1つの引数を除いてのみに変更されました:

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

ドキュメント: https://laravel.com/docs/5.2/database

2
j3py

このようなクエリを実行してlistenを実行し、結果をstorage/logs/laravel.logに記録できます。

\DB::listen(function ($sql, $bindings, $time) {
    \Log::info($sql, $bindings, $time);
});

$timeのみを使用することもできますが、完了のために$sql, $bindings, $timeを記録しました。

これをAppServiceProviderに入れることができます。

UPDATE:

Laravel version> 5.5では、このアプローチは listing for query events ;)としてドキュメントに記載されています

0
Gayan

Laravel 6.xから始まるddd($someVar)ヘルパーを使用できます。

Queriesタブがあり、ddd()までに実行される各クエリについて説明します

0