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

Jul 28, 2023 pm 02:45 PM
laravel 中间件 性能监控

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
Copier après la connexion

在生成的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;
    }
}
Copier après la connexion

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

protected $middleware = [
    // ...
    AppHttpMiddlewareLogMiddleware::class,
];
Copier après la connexion

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

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

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

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

在生成的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;
    }
}
Copier après la connexion

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

protected $middleware = [
    // ...
    AppHttpMiddlewarePerformanceMiddleware::class,
];
Copier après la connexion
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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? Mar 31, 2025 pm 11:24 PM

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Mar 31, 2025 pm 11:48 PM

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Apr 01, 2025 am 07:09 AM

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Apr 01, 2025 am 09:09 AM

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel – URL de l'action Laravel – URL de l'action Aug 27, 2024 am 10:51 AM

Laravel - URL d'action - Laravel 5.7 introduit une nouvelle fonctionnalité appelée « URL d'action appelable ». Cette fonctionnalité est similaire à celle de Laravel 5.6 qui accepte la méthode string in action. L'objectif principal de la nouvelle syntaxe introduite par Laravel 5.7 est de diriger

Laravel Eloquent Orm dans Bangla Partial Model Search) Laravel Eloquent Orm dans Bangla Partial Model Search) Apr 08, 2025 pm 02:06 PM

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

See all articles