Position actuelle: Accueil> Derniers articles> Comment implémenter les requêtes de base de données et la surveillance des performances à l'aide de middleware à Laravel

Comment implémenter les requêtes de base de données et la surveillance des performances à l'aide de middleware à Laravel

M66 2025-06-19

Comment implémenter les requêtes de base de données et la surveillance des performances à l'aide de middleware à Laravel

Les requêtes de base de données et la surveillance des performances sont très importantes lors du développement d'applications Web. Laravel fournit un puissant mécanisme de middleware qui peut aider les développeurs à gérer ces exigences entre les demandes et les réponses. Le middleware peut exécuter la logique avant que la demande n'atteigne le contrôleur ou après le retour de la réponse à l'utilisateur. Cet article présentera comment implémenter les fonctions de journalisation des requêtes de base de données et de surveillance des performances via Laravel Middleware.

1. Créer du middleware

Tout d'abord, nous devons créer un middleware. En exécutant la commande suivante, nous pouvons créer un middleware appelé queryLogmiddleware:

 php artisan make:middleware QueryLogMiddleware

Cette commande générera un fichier `queryLogmiddleware.php` dans le répertoire` app / http / middleware`. Nous pouvons maintenant écrire la logique middleware dans ce fichier.

2. Implémentez la fonction de journal de requête de base de données

Afin d'enregistrer le journal de requête de la base de données, nous pouvons utiliser la façade DB de Laravel dans la méthode `Handle» du middleware pour obtenir toutes les requêtes SQL et les connecter dans le fichier journal. Voici un exemple de code:

 <?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\DB;

class QueryLogMiddleware
{
    public function handle($request, Closure $next)
    {
        // Activer le journal de requête
        DB::connection()->enableQueryLog();

        $response = $next($request);

        // Obtenez le journal des requêtes
        $queries = DB::getQueryLog();

        foreach ($queries as $query) {
            // Volonté$queryÉcrire dans les fichiers journaux
        }

        return $response;
    }
}

Dans le code ci-dessus, `DB :: Connection () -> activerqueryLog ()` Active la journalisation des requêtes. En appelant la méthode db :: getQueryLog (), nous obtenons tous les journaux de requête et pouvons traverser et enregistrer chaque requête.

3. Ajouter la fonction de surveillance des performances

En plus d'enregistrer les journaux de requête de la base de données, nous pouvons également utiliser le middleware pour implémenter les fonctions de surveillance des performances. Par exemple, nous pouvons utiliser l'extension Debugbar de Laravel pour surveiller le temps de réponse de l'application. Voici un exemple de code:

 <?php

namespace App\Http\Middleware;

use Closure;
use Barryvdh\Debugbar\Facade as Debugbar;

class PerformanceMiddleware
{
    public function handle($request, Closure $next)
    {
        $start = microtime(true);

        $response = $next($request);

        $end = microtime(true);
        $executionTime = $end - $start;

        // Ajouter des données de surveillance des performances
        Debugbar::addMeasure('Execution Time', $start, $end);

        return $response;
    }
}

Dans le code ci-dessus, nous utilisons la façade de Debugbar pour ajouter une métrique de performances appelée "temps d'exécution" et calculons le temps d'exécution de la demande. Vous pouvez également ajouter d'autres mesures de surveillance des performances, telles que le nombre de requêtes de base de données, l'utilisation de la mémoire, etc.

4. Enregistrer le middleware

Ensuite, nous devons enregistrer ces middleware dans l'application. Ouvrez le fichier `app / http / kernel.php` et ajoutez le code suivant à la propriété` $ middlewaregroups ':

 protected $middlewareGroups = [
    'web' => [
        // Autres middleware...
        \App\Http\Middleware\QueryLogMiddleware::class,
        \App\Http\Middleware\PerformanceMiddleware::class,
    ],
];

Cela ajoute QueryLogMiddleware et Performancemiddleware au groupe Web Middleware, ce qui signifie qu'ils seront exécutés lors de chaque demande Web.

5. Utilisez du middleware

Nous pouvons maintenant utiliser ces middleware dans toute méthode de routage ou de contrôleur de l'application. Par exemple, dans le fichier `Routes / web.php`, nous pouvons l'utiliser:

 Route::middleware(['query.log', 'performance'])->group(function () {
    // Définition de routage...
});

Cet exemple montre comment appliquer le middleware aux groupes de routage. Vous pouvez également les appliquer à une seule route ou méthode de contrôleur.

en conclusion

En utilisant le middleware de Laravel, nous pouvons facilement ajouter des requêtes de base de données et des capacités de surveillance des performances à nos applications. Nous avons créé un `queryLogmiddleware 'pour enregistrer le journal de requête de la base de données et surveiller les performances de l'application via` Performancemiddleware'. Ces femmes intermédiaires sont très simples à inscrire et à utiliser, mais elles améliorent considérablement la surveillance et la maintenabilité de l'application.