Surveillance des applications PHP : des métriques de base au profilage avancé
La surveillance des applications PHP ne se limite pas à « vérifier si le site n’est pas tombé ». C’est un processus complet de collecte, d’analyse et de visualisation des données sur le fonctionnement du code, du serveur et de la base de données. Pour le portail éducatif pythonlib.ru (orienté PHP), nous avons rassemblé les outils et méthodes clés qui vous aideront à garder le pouls de votre projet.
Pourquoi surveiller PHP ?
- Détection des goulots d’étranglement : requêtes lentes vers la BDD, boucles longues, algorithmes non optimaux.
- Prévention des pannes : erreurs fatales, dépassement des limites de mémoire, manque d’espace disque.
- Analyse de l’expérience utilisateur : temps de chargement des pages, nombre de requêtes par seconde (RPS), taux d’erreur.
- Sécurité : schémas de requêtes suspects, attaques par injection.
Outils principaux de surveillance PHP
1. Xdebug — le classique du profilage
Xdebug est une extension pour PHP qui fournit le traçage de la pile, le profilage et le débogage. Pour la surveillance, utilisez le mode profilage (profiler_enable_trigger).
Exemple de configuration php.ini :
zend_extension=xdebug.soxdebug.mode=profilexdebug.output_dir=/tmp/xdebugxdebug.profiler_output_name=cachegrind.out.%pLe résultat — des fichiers cachegrind.out, qui peuvent être analysés avec KCachegrind ou Webgrind.
2. Pinba — surveillance en temps réel
Pinba (PHP Is Not A Bottleneck Anymore) est un collecteur de métriques léger, fonctionnant comme un module PHP et un serveur en C. Il envoie des données sur le temps d’exécution, la mémoire, le nombre de requêtes et les erreurs vers MySQL.
Exemple d’utilisation dans le code :
// Définition du minuteurpinba_timer_start('my_script');
// Votre code$data = heavyCalculation();
// Arrêt du minuteur et envoi des donnéespinba_timer_stop('my_script');
// Étiquettes supplémentairespinba_script_name_set('api/v1/users');pinba_hostname_set('web-01');Les données sont automatiquement placées dans les tables Pinba, d’où elles peuvent être visualisées dans Grafana.
3. Tideways — profileur commercial
Tideways (anciennement XHProf) est une extension pour PHP qui permet de profiler un environnement de production avec une surcharge minimale. Il collecte :
- Le temps d’exécution de chaque fonction.
- Le nombre d’appels.
- La consommation mémoire.
Installation via Composer :
composer require tideways/php-xhprof-extensionLancement du profilage :
$profiler = new Tideways\\Profiler();$profiler->start();
// Votre code$result = expensiveOperation();
$profiler->stop();$data = $profiler->getCallgraph(); // données pour visualisationJournalisation des erreurs : la base de la surveillance
Sans une journalisation de qualité, la surveillance est inutile. Utilisez des bibliothèques compatibles PSR-3, comme Monolog.
Exemple de configuration de Monolog pour envoyer les erreurs critiques vers Telegram :
use Monolog\\Logger;use Monolog\\Handler\\TelegramBotHandler;
$logger = new Logger('app');$handler = new TelegramBotHandler( 'YOUR_BOT_TOKEN', 'YOUR_CHAT_ID', Logger::CRITICAL);$logger->pushHandler($handler);
try { // code dangereux} catch (\\Throwable $e) { $logger->critical('Erreur dans le module de paiement', [ 'exception' => $e, 'user_id' => $userId, 'ip' => $_SERVER['REMOTE_ADDR'] ]);}Métriques à suivre
Voici un ensemble minimal de métriques pour toute application PHP :
- Temps de réponse (Response Time) — moyenne, 95e et 99e percentiles.
- Nombre de requ
Aussi dans la bibliothèque
Envoi d'Email en Java : bibliothèques JavaMail et Simple Java Mail
Traitement JSON en Go (Golang) : encoding/json et alternatives
Framework Laravel pour PHP : guide complet avec exemples
Conteneur d'injection de dépendances en C++ : bibliothèque Fruit pour l'injection de dépendances