Un site qui rame, c’est rarement une seule cause. Avant même que votre navigateur n’affiche quoi que ce soit, le serveur a déjà fait un travail invisible : exécuter le code PHP qui construit la page. Quand cette étape traîne, l’outil PHP X‑Ray, disponible dans votre cPanel, vous aide à savoir précisément où part le temps. Dans cet article, vous allez découvrir ce que cet outil mesure, comment lancer une analyse, comment lire son rapport, et en quoi il se distingue d’un autre outil de votre hébergement, Application Profiler.
Qu’est-ce que PHP X‑Ray ?
PHP X‑Ray est un outil de diagnostic intégré au cPanel, dans la section « Logiciel ». Il analyse l’exécution PHP d’un site afin d’identifier ce qui consomme le plus de temps pendant la génération d’une page : scripts, extensions, thèmes, requêtes SQL, fonctions lentes ou appels vers des services externes.

Même si je prends WordPress comme exemple tout au long de cet article, PHP X‑Ray n’est pas un outil réservé à WordPress. Il fonctionne avec n’importe quelle application reposant sur PHP : PrestaShop, Joomla, Drupal ou un développement sur mesure. Dès qu’un site est lent et que la cause se situe côté serveur, il peut vous aider à isoler le problème.
Un point important à garder en tête : PHP X‑Ray ne corrige rien. C’est un outil de mesure. Il vous montre où se situe la lenteur, mais la correction reste à votre charge, ou à celle de votre développeur, selon le composant en cause.
Quand l’utiliser ?
PHP X‑Ray devient utile dès que votre site présente des signes de lenteur côté serveur. Par exemple :
- des lenteurs régulières ou qui apparaissent par intermittence ;
- un temps de chargement élevé sur certaines pages ;
- une administration WordPress (ou un back-office PrestaShop) qui répond lentement ;
- des pics de consommation processeur ou disque ;
- un doute sur une extension, un thème ou un développement spécifique.
À l’inverse, PHP X‑Ray ne vous sera d’aucune aide pour une lenteur qui se joue dans le navigateur, comme un script JavaScript externe trop lourd. Son champ d’analyse s’arrête à ce que fait le serveur. Il peut toutefois montrer qu’un appel externe coûte du temps côté PHP, souvent sous une forme technique comme curl_exec. Il donne alors une piste, mais pas forcément l’identité exacte du service appelé.
Lancer une analyse

Depuis l’interface PHP X‑Ray, le bouton « Start tracing » ouvre le formulaire de configuration d’une analyse. Vous y renseignez deux éléments essentiels : le domaine à analyser, choisi dans le menu déroulant, et un masque d’URL dans le champ « Specify mask ».

Le masque indique quelles pages surveiller. Pour capturer largement les pages d’un site, utilisez un masque large, par exemple /* si vous souhaitez couvrir l’ensemble des chemins du domaine. C’est aussi ce qui vous permet de cibler une page précise plutôt que tout le site : indiquez son chemin, par exemple /boutique/* pour ne tracer que les pages de la boutique. Pratique quand vous savez déjà quelle page pose problème, car vous évitez de mélanger des requêtes sans rapport. Le lien « How to use special characters ? », à côté du champ, détaille la syntaxe complète si vous voulez aller plus loin.
Dans son mode par défaut, PHP X‑Ray trace les 20 premières requêtes reçues sur l’URL indiquée, ce qui suffit dans la plupart des cas. Si vous avez besoin de plus de maîtrise, la case « Advanced settings » déverrouille des réglages supplémentaires. Vous pouvez y filtrer par adresse IP (le caractère * signifie « toutes les IP »), pratique pour ne tracer que vos propres visites sur un site déjà fréquenté. Vous y choisissez aussi l’étendue du test, selon deux modes au choix : par nombre de requêtes (« Request »), réglable de 1 à 100, ou par durée (« Time period »), comprise entre 1 minute et 2 jours au maximum. Le bouton « Run » démarre l’enregistrement.

Une fois l’analyse lancée, elle se nourrit des visites du site. Sur un site à fort trafic, les requêtes des internautes suffisent à alimenter l’analyse en quelques instants, sans rien faire de particulier. Sur un site peu fréquenté, ou pour reproduire une action précise, c’est à vous de générer le trafic : ouvrez les pages concernées dans votre navigateur, reproduisez l’action lente (une recherche, l’ajout au panier, l’ouverture du tableau de bord), et répétez l’opération autant de fois que nécessaire selon le nombre de requêtes configuré. Revenez ensuite dans PHP X‑Ray pour consulter les résultats.
Vous pouvez utiliser PHP X‑Ray sur un site en production sans crainte pour son intégrité : l’outil se contente d’observer l’exécution PHP, il ne modifie ni votre site ni vos données, et reste invisible pour vos visiteurs. Une réserve toutefois : pendant le traçage, l’éditeur CloudLinux indique un surcoût de l’ordre de 5 à 10 % sur le temps de chargement. C’est sans conséquence en pratique, car une analyse est toujours bornée. Par défaut, elle s’arrête au bout de 20 requêtes ; et si vous passez par les réglages avancés, vous fixez vous-même cette limite, en nombre de requêtes (jusqu’à 100) ou en durée (2 jours au maximum). Dans tous les cas, le traçage prend fin de lui-même une fois la limite atteinte. C’est aussi ce qui explique que PHP X‑Ray ne soit pas conçu pour rester actif en permanence.
Quelques détails méritent d’être signalés, car ils évitent de perdre du temps :
- Une seule analyse à la fois. PHP X‑Ray n’autorise qu’une trace active simultanément. Pour en lancer une nouvelle, arrêtez d’abord la précédente.
- Méfiez-vous des caractères spéciaux dans le masque. Un masque contenant
?ou=peut ne rien capturer. En cas de doute, préférez un masque large et identifiez la bonne page ensuite, dans le rapport. - Le cache fausse la mesure. Si une page est servie depuis un cache de page, PHP n’est pas réellement exécuté, et PHP X‑Ray ne mesure alors presque rien. Lors d’un de mes tests : sur un site avec cache, une même page passait de quelques millisecondes en visiteur anonyme (servie par le cache) à plus d’une demi-seconde une fois connecté (générée par PHP). Pour diagnostiquer un site qui utilise un cache, placez-vous donc dans des conditions où le code s’exécute vraiment : naviguez en étant connecté, car les caches de page excluent généralement les utilisateurs identifiés, ou testez une page jamais mise en cache comme le tableau de bord. Pour comprendre quel cache agit sur votre site, consultez notre guide d’aide à la décision sur le cache.
- Si la capture reste vide, rechargez la configuration PHP. Il arrive que le tracing reste à zéro alors que tout semble correct. Dans ce cas, une astuce efficace : dans le cPanel, ouvrez PHP puis Options, modifiez puis enregistrez n’importe quel réglage (vous pouvez même le remettre à sa valeur d’origine). Cette opération force un rechargement du moteur PHP, ce qui réactive la collecte. C’est une manipulation que j’ai dû employer plusieurs fois pour débloquer une capture récalcitrante.
- Lors de mes tests, IPXtender empêchait la capture. Si le domaine analysé utilise IPXtender et que PHP X‑Ray reste vide malgré des visites réelles, désactivez temporairement IPXtender le temps de l’analyse, attendez que la configuration soit bien prise en compte, puis relancez le tracing.
➔ Conseil pratique : avant de lancer PHP X‑Ray, notez précisément ce que vous voulez tester : page produit lente, recherche interne, ajout au panier, tableau de bord WordPress, etc. Plus le scénario est clair, plus le rapport sera facile à interpréter.
Lire et interpréter un rapport

Une fois les requêtes capturées, PHP X‑Ray affiche la liste des sessions enregistrées, avec pour chacune sa durée. Par défaut, un filtre « Slow » met en avant les requêtes jugées lentes. Pensez à le retirer si vous cherchez une requête précise qui n’a pas franchi ce seuil : sur une base de données peu volumineuse, une page peut rester sous le radar tout en méritant un examen.

En ouvrant le détail d’une requête, vous accédez au cœur de l’outil. Le rapport est organisé en rubriques distinctes :
- les principaux problèmes détectés, classés par impact ;
- les modules et extensions, avec le temps consommé par chacun ;
- les requêtes SQL, avec pour chaque requête le fichier et la ligne qui la déclenchent, le module responsable et, surtout, le nombre d’appels ;
- les fonctions système, dont les appels externes comme
curl_exec.
C’est cette séparation qui fait la valeur de l’outil. Prenons un cas concret rencontré pendant mes essais : une page exécutait la même requête SQL des centaines de fois. Dans le rapport, cette requête apparaissait en tête de la rubrique base de données, avec un nombre d’appels affiché clairement et le fichier exact qui la déclenchait. Pour un propriétaire de site, le diagnostic est immédiat : une requête lancée en boucle pointe vers un problème d’optimisation, sans avoir besoin de lire la moindre ligne de code.

Le tableau ci-dessous résume comment on peut interpréter ce que montre PHP X‑Ray.
| Ce que montre le rapport | Ce que cela peut indiquer |
|---|---|
| Temps PHP élevé | Une extension, un thème ou du code spécifique lent |
| Appel externe lent | Une attente côté serveur liée à un service tiers lent ou momentanément indisponible |
| Requêtes SQL répétées | Une base volumineuse, une requête mal optimisée ou une extension trop gourmande |
| Consommation mémoire élevée | Un traitement lourd : import, export, génération de fichiers |
| Lenteur dans l’administration | Des extensions gourmandes en temps d’exécution, chargées côté back-office |
Sur le volet mémoire en particulier, il est utile de croiser les résultats de PHP X‑Ray avec l’outil d’utilisation des ressources du cPanel, pour distinguer une lenteur d’une véritable saturation. Pour mieux comprendre ces notions, notre article sur les limites de ressources CPU, RAM et I/O apporte le contexte nécessaire.
Enfin, le rapport peut être exporté au format PDF. C’est pratique pour archiver un diagnostic ou le transmettre à la personne qui interviendra sur le code.
➔ Bon à savoir. Un rapport PHP X‑Ray reflète un instant donné. Si une lenteur est intermittente, multipliez les analyses à différents moments pour la saisir dans de bonnes conditions.
PHP X‑Ray et Application Profiler : deux lectures complémentaires
o2switch propose un second outil d’analyse des performances serveur, Application Profiler. La question se pose donc naturellement : font-ils double emploi ? La réponse est non. Les deux observent bien la même réalité, le temps passé par PHP à construire une page, mais ils ne la présentent pas de la même façon.
PHP X‑Ray décompose le temps par type de traitement. Il range séparément les requêtes SQL, les appels externes et les modules, et chiffre chaque poste. Application Profiler, lui, restitue la pile d’appels sous forme de FlameGraph, une représentation visuelle où chaque bloc est une fonction PHP : plus un bloc est large, plus il a consommé de temps.
J’ai soumis la même page lente aux deux outils. Là où PHP X‑Ray isolait la requête SQL fautive avec son nombre d’appels, Application Profiler rattachait ce même temps à la fonction WordPress qui exécute les requêtes, wpdb::_do_query, sans détailler la requête elle-même. La lenteur liée au SQL est visible dans les deux cas, mais vu différemment : comme une rubrique chiffrée d’un côté, comme une fonction de la pile d’appels de l’autre.
Concrètement, le choix de l’outil dépend de la question que vous vous posez, et les deux se complètent. PHP X‑Ray excelle pour mettre le doigt sur une requête SQL répétée ou un appel externe bloquant, parce qu’il les fait ressortir dans des rubriques dédiées. Application Profiler brille quand vous cherchez à comprendre quelle extension ou quel thème alourdit le rendu d’une page, car la largeur des blocs rend immédiatement visible ce qui pèse le plus dans la pile d’appels. Pour découvrir le FlameGraph en détail, reportez-vous à mon article dédié à Application Profiler.
Conclusion
PHP X‑Ray sert à répondre à une question précise : quand une page PHP est lente, où part le temps ? Il décompose l’exécution en rubriques claires, scripts, requêtes SQL, appels externes, et pointe le fichier responsable. C’est l’outil idéal pour identifier une requête répétée ou repérer une attente liée à un appel externe côté serveur. Gardez en tête qu’il reste un outil de mesure : il analyse ce que fait le serveur, pas ce qui se passe dans le navigateur comme un script JavaScript lent, et il ne corrige rien à votre place.
Il ne remplace pas Application Profiler, il le complète : l’un répond à « quelle requête, combien de fois », l’autre à « quel composant PHP pèse le plus ». Une fois le diagnostic posé, la correction reste à mener sur le site, son thème, ses extensions ou sa base de données. Si elle suppose une intervention sur le code, le rapport, exportable en PDF, constitue une base solide à transmettre à votre développeur.













