Maison > développement back-end > tutoriel php > Middleware CodeIgniter : ajoutez la journalisation des performances et la journalisation des erreurs à votre application

Middleware CodeIgniter : ajoutez la journalisation des performances et la journalisation des erreurs à votre application

PHPz
Libérer: 2023-07-31 12:12:02
original
1616 Les gens l'ont consulté

Middleware CodeIgniter : ajoutez la journalisation des performances et la journalisation des erreurs aux applications

Citation :
La journalisation des performances et la journalisation des erreurs sont très critiques lors du développement d'applications Web. Afin de surveiller et d'optimiser efficacement les performances des applications, nous devons être en mesure d'obtenir le temps d'exécution de l'application et d'enregistrer les informations sur les erreurs générées dans l'application. CodeIgniter fournit des fonctions middleware qui peuvent facilement ajouter des journaux de performances et des fonctions d'enregistrement des erreurs aux applications. Cet article explique comment utiliser le middleware dans CodeIgniter pour implémenter les fonctions de journalisation des performances et d'enregistrement des erreurs.

1. Créer un middleware
Tout d'abord, nous devons créer une classe middleware. Dans CodeIgniter, la classe middleware est une classe qui hérite de la classe CI_Middleware. Nous pouvons placer la classe middleware dans le répertoire application/middleware (si le répertoire n'existe pas, vous devez le créer manuellement). Voici le code d'un exemple de classe middleware :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class PerformanceLoggerMiddleware extends CI_Middleware {
    public function handle(RequestInterface $request, Closure $next)
    {
        // 记录请求开始时间
        $startTime = microtime(true);

        // 执行下一个中间件或路由处理器
        $response = $next($request);

        // 计算请求执行时间
        $endTime = microtime(true);
        $executionTime = $endTime - $startTime;

        // 将执行时间记录到日志中
        log_message('info', 'Request execution time: ' . $executionTime);

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

Dans le code ci-dessus, nous avons créé une classe middleware appelée PerformanceLoggerMiddleware. Cette classe middleware hérite de la classe CI_Middleware et implémente la méthode handle. La méthode handle reçoit un objet RequestInterface et un objet Closure comme paramètres. Dans la méthode handle, nous enregistrons d'abord l'heure à laquelle la requête démarre, puis exécutons le prochain middleware ou processeur de route, puis calculons l'heure à laquelle la requête est exécutée et l'enregistrons dans le journal de l'application.

2. Enregistrez le middleware
Ensuite, nous devons enregistrer le middleware dans CodeIgniter. Pour y parvenir, nous devons effectuer une certaine configuration. Tout d'abord, ouvrez le fichier application/config/config.php, recherchez l'élément de configuration suivant et définissez-le sur true :

$config['enable_hooks'] = true;
Copier après la connexion

Ensuite, ouvrez le fichier application/config/hooks.php et ajoutez le code suivant dans l'extrait de code ci-dessous :

$hook['pre_system'][] = [
    'class' => 'PerformanceLoggerMiddleware',
    'function' => 'handle',
    'filename' => 'PerformanceLoggerMiddleware.php',
    'filepath' => 'middleware',
];
Copier après la connexion

Dans le code ci-dessus, nous enregistrons la classe PerformanceLoggerMiddleware en tant que fonction de traitement du hook pre_system. Cela signifie que la méthode handle de PerformanceLoggerMiddleware sera exécutée avant le traitement de chaque requête.

3. Testez le middleware
Maintenant que nous avons terminé la création et l'enregistrement du middleware, nous pouvons le tester. Nous pouvons tester cela en modifiant le contrôleur principal de l'application. Voici un exemple de code de contrôleur :

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {
    public function index()
    {
        sleep(1);  // 模拟一个耗时操作

        $this->load->view('welcome_message');
    }
}
Copier après la connexion

Dans le code ci-dessus, nous simulons une opération fastidieuse (en utilisant la fonction sleep) puis chargeons un fichier de vue. Lorsque nous accédons au contrôleur, le middleware enregistre le temps d'exécution de la requête et l'enregistre dans le fichier journal de l'application.

4. Afficher les journaux
Enfin, nous pouvons visualiser les journaux de performances enregistrés par le middleware en ouvrant le fichier journal de l'application. Dans CodeIgniter, les fichiers journaux par défaut sont stockés dans le répertoire application/logs. Voici le contenu du fichier log à titre d'exemple :

INFO - 2019-01-01 10:00:00 --> Request execution time: 1.02345204353
Copier après la connexion

Dans l'exemple ci-dessus, on peut voir que le temps d'exécution de la requête est enregistré.

Résumé :
En utilisant un middleware dans CodeIgniter, nous pouvons facilement ajouter des fonctionnalités de journalisation des performances et de journalisation des erreurs à nos applications. Dans cet article, nous avons expliqué comment créer une classe middleware et l'enregistrer auprès de CodeIgniter. Avec un exemple simple, nous montrons comment utiliser un middleware pour enregistrer le temps d'exécution d'une requête et la consigner dans le fichier journal de l'application. Cette approche peut nous aider à mieux surveiller et optimiser nos applications Web et à offrir une meilleure expérience utilisateur.

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!

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