Maison >développement back-end >tutoriel php >Middleware Laravel : ajoutez des fonctionnalités de journalisation et de surveillance des performances à votre application

Middleware Laravel : ajoutez des fonctionnalités de journalisation et de surveillance des performances à votre application

PHPz
PHPzoriginal
2023-07-28 14:45:37941parcourir

Middleware Laravel : ajoutez des fonctionnalités de journalisation et de surveillance des performances aux applications

Introduction :
La journalisation et la surveillance des performances sont des fonctionnalités très importantes lors du développement d'applications Web modernes. Les journaux peuvent aider les développeurs à suivre les événements, les erreurs et les exceptions qui se produisent dans les applications, tandis que la surveillance des performances peut aider les développeurs à identifier les goulots d'étranglement des performances et à les optimiser. Le framework Laravel fournit de puissantes fonctionnalités middleware qui permettent aux développeurs d'ajouter facilement des fonctionnalités de journalisation et de surveillance des performances aux applications. Cet article expliquera comment utiliser le middleware Laravel pour implémenter ces fonctions et fournira des exemples de code.

1. Qu'est-ce que le middleware Laravel ?
Le middleware Laravel est un filtre qui peut être exécuté avant ou après que la requête ait atteint l'application. En utilisant un middleware, les développeurs peuvent effectuer des opérations de pré-traitement ou de post-traitement sur les requêtes, telles que l'authentification, la journalisation, la surveillance des performances, etc. Le middleware peut ajouter des fonctionnalités supplémentaires à une application et offre une bonne organisation et réutilisation du code.

2. Ajouter une fonction de journalisation à l'application
Dans Laravel, nous pouvons utiliser un middleware pour ajouter une fonction de journalisation à l'application. Voici un exemple simple montrant comment utiliser un middleware pour enregistrer l'heure de début et de fin de chaque requête :

Tout d'abord, créez un middleware appelé LogMiddleware : LogMiddleware的中间件:

php artisan make:middleware LogMiddleware

在生成的app/Http/Middleware/LogMiddleware.php文件中,添加以下代码:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesLog;

class LogMiddleware
{
    public function handle($request, Closure $next)
    {
        $start = microtime(true);
        
        // 继续处理请求
        $response = $next($request);
        
        // 计算请求执行时间
        $end = microtime(true);
        $executionTime = $end - $start;
        
        // 记录日志
        Log::info('Request completed in ' . $executionTime . ' seconds');
        
        return $response;
    }
}

然后,在app/Http/Kernel.php文件的$middleware数组中注册中间件:

protected $middleware = [
    // ...
    AppHttpMiddlewareLogMiddleware::class,
];

现在,每次发起请求时,中间件将会记录请求的执行时间,并将其写入日志中。

三、为应用程序添加性能监控功能
除了日志记录外,我们还可以使用中间件来为应用程序添加性能监控功能。下面是一个简单的示例,展示如何使用中间件计算每个请求的执行时间,并将其记录下来:

首先,创建一个名为PerformanceMiddleware的中间件:

php artisan make:middleware PerformanceMiddleware

在生成的app/Http/Middleware/PerformanceMiddleware.php文件中,添加以下代码:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesLog;

class PerformanceMiddleware
{
    public function handle($request, Closure $next)
    {
        $start = microtime(true);
        
        // 继续处理请求
        $response = $next($request);
        
        // 计算请求执行时间
        $end = microtime(true);
        $executionTime = $end - $start;
        
        // 获取SQL查询次数
        $queryCount = DB::getQueryLog();
        $queryCount = count($queryCount);
        
        // 记录性能信息
        Log::info('Request completed in ' . $executionTime . ' seconds');
        Log::info('Number of database queries: ' . $queryCount);
        
        return $response;
    }
}

然后,在app/Http/Kernel.php文件的$middleware

protected $middleware = [
    // ...
    AppHttpMiddlewarePerformanceMiddleware::class,
];

Dans le Dans le >app/Http/Middleware/LogMiddleware.php, ajoutez le code suivant :

rrreee

Puis, dans le fichier app/Http/Kernel.php, $middleware : <p>rrreee<br>Désormais, chaque fois qu'une requête est effectuée, le middleware enregistrera le temps d'exécution de la requête et l'écrira dans le journal. </p>🎜3. Ajouter des fonctions de surveillance des performances aux applications🎜En plus de la journalisation, nous pouvons également utiliser un middleware pour ajouter des fonctions de surveillance des performances aux applications. Voici un exemple simple montrant comment utiliser un middleware pour calculer le temps d'exécution de chaque requête et l'enregistrer : 🎜🎜Tout d'abord, créez un middleware appelé <code>PerformanceMiddleware : 🎜rrreee🎜In Dans le généré app/Http/Middleware/PerformanceMiddleware.php, ajoutez le code suivant : 🎜rrreee🎜Ensuite, dans le fichier app/Http/Kernel.php Enregistrez le middleware dans le $middleware array : 🎜rrreee🎜Désormais, chaque fois qu'une requête est effectuée, le middleware calculera le temps d'exécution de la requête et le nombre de requêtes de base de données, et les écrira dans le journal pour aider les développeurs à analyser les performances. 🎜🎜Résumé : 🎜En utilisant le middleware Laravel, nous pouvons facilement ajouter des fonctionnalités de journalisation et de surveillance des performances à nos applications. Dans cet article, nous fournissons deux exemples qui montrent comment utiliser un middleware pour enregistrer le temps d'exécution d'une requête et le nombre de requêtes de base de données et les écrire dans un journal. En utilisant ces middlewares, les développeurs peuvent mieux comprendre comment leurs applications s'exécutent et les ajuster et les optimiser en conséquence. J'espère que les lecteurs pourront comprendre l'utilisation du middleware Laravel grâce à cet article et pouvoir l'appliquer de manière flexible dans le développement réel. 🎜

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!

Déclaration:
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