web-dev-qa-db-fra.com

Tester le temps d'exécution de la requête en laravel

Comment tester dans laravel/phpunit combien de temps la requête a pris pour s'exécuter?

Est-il possible de ne pas dépendre d'autre chose?

13
changer

La manière la plus ancienne est la meilleure:

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

Puisque Laravel 5.2 listen a changé en un seul argument:

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

Documents: https://laravel.com/docs/5.2/database

2
j3py

Vous pouvez listen pour exécuter une requête comme celle-ci et consigner le résultat dans storage/logs/laravel.log.

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

Vous pouvez simplement utiliser $time uniquement, mais je me suis connecté $sql, $bindings, $time pour l'achèvement.

Vous pouvez mettre cela dans votre AppServiceProvider.

MISE À JOUR:

Dans Laravel version> 5.5 cette approche est documentée dans le doc comme écoute des événements de requête ;)

0
Gayan

Vous pouvez utiliser ddd($someVar) helper à partir de Laravel 6.x.

Il y a un onglet Queries qui décrit chaque requête exécutée jusqu'à ce que ddd()

0