Les techniques efficaces pour diagnostiquer rapidement les problèmes de performances PHP incluent l'utilisation de Xdebug pour obtenir des données de performances, puis l'analyse de la sortie Cachegrind. Utilisez Blackfire pour afficher les traces des demandes et générer des rapports de performances. Examinez les requêtes de base de données pour identifier les requêtes inefficaces. Analysez l'utilisation de la mémoire, affichez les allocations de mémoire et l'utilisation maximale.
PHP est un langage de script puissant et populaire, mais comme toute autre technologie, il peut également rencontrer des problèmes de performances. Afin de résoudre ces problèmes, il est crucial de les diagnostiquer rapidement et précisément. Cet article vous guidera à travers un ensemble de techniques efficaces pour diagnostiquer rapidement les problèmes de performances PHP.
Xdebug est une puissante extension PHP qui peut fournir des données de performances détaillées sur l'exécution de scripts. Pour utiliser Xdebug, suivez ces étapes :
pecl install xdebug
Après l'installation, ajoutez ce qui suit à votre fichier php.ini
: php.ini
文件中:
zend_extension=xdebug.so xdebug.profiler_enable=On xdebug.profiler_output_dir="/tmp" xdebug.profiler_output_name=cachegrind.out.%t.%s
运行脚本后,Xdebug 将在 /tmp
目录中生成一个 Cachegrind 输出文件(cachegrind.out.<pid>.<script-name>
)。您可以使用 KCacheGrind(一个免费的 GUI 工具)或 pprof --callgrind
命令来分析此输出文件。
Blackfire 是一个商业的 PHP 性能分析工具,提供了对请求执行的深入见解。要使用 Blackfire,请安装其 PHP 扩展并在您的脚本中添加以下代码:
use Blackfire\Client; $client = new Client(); $client->startProfile();
在脚本完成后,使用以下命令生成性能报告:
blackfire report -profile=/tmp/blackfire/<profile-id>
数据库查询可能是 PHP 性能问题的常见源泉。要检查查询,请使用 Xdebug 或 Blackfire 来查看执行的时间和数量。您还可以使用 MySQL 查询分析工具(如 pt-query-digest
)来识别低效查询。
内存使用过高会减慢脚本的执行速度。要分析内存使用情况,请使用 Xdebug 或 Blackfire 查看内存分配和峰值使用情况。您还可以使用 memory_get_peak_usage()
PHP 函数来检查脚本的最大内存使用量。
假设您有一个运行缓慢的 WordPress 网站。通过使用 Xdebug 分析 Cachegrind 输出,您发现一个加载了大量帖子的页面特别慢。进一步调查显示,.
符号之前的数据库表链接符(.
rrreee
cachegrind.out.<pid>.<script-name>
) dans le répertoire /tmp
. Vous pouvez analyser ce fichier de sortie à l'aide de KCacheGrind (un outil GUI gratuit) ou de la commande pprof --callgrind
. 🎜🎜3. Afficher les traces des requêtes à l'aide de Blackfire🎜🎜Blackfire est un outil commercial d'analyse des performances PHP qui fournit des informations approfondies sur l'exécution des requêtes. Pour utiliser Blackfire, installez son extension PHP et ajoutez le code suivant à votre script : 🎜rrreee🎜Une fois le script terminé, générez un rapport de performances à l'aide de la commande suivante : 🎜rrreee🎜4. Vérifiez la requête de base de données 🎜🎜La requête de base de données peut. être Performances PHP Une source courante de problèmes. Pour examiner la requête, utilisez Xdebug ou Blackfire pour voir quand et combien de fois elle a été exécutée. Vous pouvez également utiliser des outils d'analyse de requêtes MySQL tels que pt-query-digest
pour identifier les requêtes inefficaces. 🎜🎜5. Analyser l'utilisation de la mémoire🎜🎜Une utilisation excessive de la mémoire ralentira l'exécution du script. Pour analyser l'utilisation de la mémoire, utilisez Xdebug ou Blackfire pour afficher les allocations de mémoire et l'utilisation maximale. Vous pouvez également utiliser la fonction PHP memory_get_peak_usage()
pour vérifier l'utilisation maximale de la mémoire de votre script. 🎜🎜Exemple pratique : diagnostiquer un site Web WordPress lent🎜🎜Disons que vous avez un site Web WordPress lent. En utilisant Xdebug pour analyser la sortie de Cachegrind, vous découvrez qu'une page qui charge un grand nombre de publications est particulièrement lente. Une enquête plus approfondie a révélé que le caractère de lien vers la table de base de données (.
) avant le symbole .
était manquant, ce qui obligeait MySQL à exécuter des requêtes lentes. Après avoir résolu ce problème, la vitesse de chargement des pages s'est considérablement améliorée. 🎜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!