Surveillance des applications PHP : outils et pratiques pour le développeur

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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.%p

Le 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-extension

Lancement du profilage :

$profiler = new Tideways\\Profiler();$profiler->start();

// Votre code$result = expensiveOperation();

$profiler->stop();$data = $profiler->getCallgraph(); // données pour visualisation


Journalisation 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

Recommendations