Maison > développement back-end > tutoriel php > Middleware Laravel : ajoutez des requêtes de base de données et une surveillance des performances à votre application

Middleware Laravel : ajoutez des requêtes de base de données et une surveillance des performances à votre application

WBOY
Libérer: 2023-07-28 15:48:02
original
1370 Les gens l'ont consulté

Middleware Laravel : ajoutez des requêtes de base de données et une surveillance des performances aux applications

Introduction :
Lors du développement d'applications Web, les requêtes de données et la surveillance des performances sont très importantes. Laravel fournit un moyen pratique de répondre à ces exigences, à savoir le middleware. Le middleware est une technologie qui gère les requêtes et les réponses. Il peut exécuter une certaine logique avant que la requête n'atteigne le contrôleur ou après que la réponse soit renvoyée à l'utilisateur. Cet article explique comment utiliser le middleware Laravel pour implémenter les requêtes de base de données et la surveillance des performances.

1. Créer un middleware
Tout d'abord, nous devons créer un middleware. Créez un nouveau fichier middleware nommé QueryLogMiddleware en exécutant la commande suivante :

php artisan make:middleware QueryLogMiddleware
Copier après la connexion

Cette commande générera un fichier QueryLogMiddleware.php dans le répertoire app/Http/Middleware. Maintenant, nous pouvons écrire notre logique middleware dans ce fichier.

2. Implémentez la fonction de journalisation des requêtes de base de données
Afin d'ajouter la fonction de journalisation des requêtes de base de données, nous pouvons utiliser la façade de base de données de Laravel (Facade) dans la méthode handle du middleware pour obtenir toutes les requêtes SQL et les enregistrer dans le fichier journal. Voici un exemple de code :

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesDB;

class QueryLogMiddleware
{
    public function handle($request, Closure $next)
    {
        DB::connection()->enableQueryLog();

        $response = $next($request);

        $queries = DB::getQueryLog();

        foreach ($queries as $query) {
            // 将$query写入日志文件
        }

        return $response;
    }
}
Copier après la connexion

Dans le code ci-dessus, nous appelons d'abord la méthode activateQueryLog de la façade DB pour activer la fonction de journalisation des requêtes. Ensuite, une fois la requête passée par la chaîne middleware, nous appelons la méthode getQueryLog pour obtenir tous les journaux de requêtes. Enfin, nous pouvons parcourir le journal des requêtes et écrire chaque enregistrement de requête dans le fichier journal.

3. Ajouter une fonction de surveillance des performances
En plus d'enregistrer les journaux de requêtes, nous pouvons également utiliser un middleware pour implémenter des fonctions de surveillance des performances. Par exemple, nous pouvons utiliser le package d'extension Debugbar de Laravel pour surveiller le temps de réponse de notre application. Voici un exemple de code :

<?php

namespace AppHttpMiddleware;

use Closure;
use BarryvdhDebugbarFacade as Debugbar;

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

        $response = $next($request);

        $end = microtime(true);

        $executionTime = $end - $start;

        Debugbar::addMeasure('Execution Time', $start, $end);

        return $response;
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons la façade du package d'extension Debugbar pour ajouter un indicateur de performance appelé "Execution Time" et calculer le temps d'exécution de la requête. Nous pouvons également ajouter d'autres indicateurs de performances, tels que le nombre de requêtes de base de données, l'utilisation de la mémoire, etc.

4. Enregistrez le middleware
Maintenant, nous devons enregistrer ces middlewares dans l'application. Ouvrez le fichier app/Http/Kernel.php et ajoutez le code suivant dans l'attribut $middlewareGroups :

protected $middlewareGroups = [
    'web' => [
        // 其他中间件...
        AppHttpMiddlewareQueryLogMiddleware::class,
        AppHttpMiddlewarePerformanceMiddleware::class,
    ],
    // 其他中间件组...
];
Copier après la connexion

Cela ajoutera QueryLogMiddleware et PerformanceMiddleware au groupe de middleware Web, ce qui signifie qu'ils seront exécutés lors des requêtes Web.

5. Utilisation d'un middleware
Désormais, nous pouvons utiliser ces middlewares dans n'importe quelle méthode de route ou de contrôleur dans l'application. Par exemple, dans le fichier routes/web.php, nous pourrions utiliser :

Route::middleware('query.log', 'performance')->group(function () {
    // 路由定义...
});
Copier après la connexion

Cet exemple montre comment appliquer un middleware à un groupe de routes. Vous pouvez également appliquer un middleware à des routes individuelles ou à des méthodes de contrôleur.

Conclusion : 
En utilisant la technologie middleware de Laravel, nous pouvons facilement ajouter des capacités de requête de base de données et de surveillance des performances à nos applications. Comme indiqué ci-dessus, nous avons créé un QueryLogMiddleware pour enregistrer les journaux de requêtes de base de données et utilisé PerformanceMiddleware pour surveiller les performances de l'application. Ces middlewares peuvent améliorer nos applications avec une simple inscription et une utilisation simple, les rendant ainsi plus puissantes et plus fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal