Existe-t-il un moyen de mesurer le temps d'analyse en PHP?
-
07-07-2019 - |
Question
L’optimisation du code PHP via l’analyse d’exécution est simple. Gardez une trace de $ start et $ end times via microtime () autour d'un bloc de code - je ne cherche pas de réponse impliquant l'utilisation de microtime ().
Ce que je voudrais faire, c'est mesurer le temps qu'il faut à PHP pour se préparer à utiliser son temps de construction code-code / code-op-code-tree. Mon raisonnement est qu’alors qu’il est facile d’inclure () chaque classe dont vous pourriez avoir besoin pour chaque page de votre site, le temps système d’utilisation du processeur ne peut pas être "gratuit". Je voudrais savoir à quel point "cher" le temps d'analyse est vraiment.
Je suppose qu'un cache d'opcode tel que APC fait ne pas partie du scénario.
Aurais-je raison de dire que la mesure du temps d'analyse en PHP est quelque chose qui devrait avoir lieu dans mod_php?
MODIFIER : Si possible, il serait utile de prendre en compte $ _SERVER ['DOCUMENT_ROOT']
. Les solutions de commandement peuvent prendre un peu de bricolage pour le faire (mais restent des réponses précieuses).
La solution
Oui. Il y a.
<?php return; rest of the code ?>
ou
<?php whole code; $%^parse erorr!@! ?>
puis comparez le temps d'exécution d'un script vide
time php empty.php
avec le temps nécessaire pour exécuter (ou échouer) un script standard avec les ajouts mentionnés ci-dessus:
time php test.php
J'ai utilisé cette méthode sur des fichiers volumineux et PHP 5.3 sur Core2Duo 2.4Ghz peut analyser entre 1,5 et 4,5 Mo de code PHP par seconde (cela dépend beaucoup de la complexité du code, bien sûr).
Autres conseils
Pour le niveau d'analyse détaillé que vous recherchez, il semble que l'implémentation de Xdebug ( http://xdebug.org// / a>) vous donnerait les meilleures informations sans avoir à découper votre code en morceaux segmentés.
Une méthode pourrait être de chronométrer l'exécution du script à partir de la ligne de commande.
Sous Linux par exemple:
$ time php5 -r 'echo "Hello world";'
Hello world
real 0m1.565s
user 0m0.036s
sys 0m0.024s
Est-ce que ça aide du tout? Peut-être est-il utile de découvrir les temps relatifs entre différents scripts, mais cela peut ne pas être indicatif du temps passé dans le module Apache