97 votes

PHP le profilage de la mémoire

Ce qui est une bonne façon de profil une page PHP de l'utilisation de la mémoire? Par exemple, pour voir combien de mémoire de mes données, et/ou les appels de fonction sont d'allouer plus de mémoire.

  • xdebug n'a pas l'air de fournir des informations sur la mémoire dans sa fonction de profilage.

  • xdebug n' fournir dans sa fonction de suivi. C'est assez proche de ce que je veux, à l'exception de la quantité de données est immense, car il présente à la mémoire des deltas pour chaque appel de fonction. S'il était possible de cacher des appels en dessous d'une certaine profondeur, avec peut-être certains outil GUI, qui permettrait de résoudre mon problème.

Est-il autre chose?

72voto

Francesco Casula Points 2508

Comme vous le savez probablement, Xdebug abandonné le profilage de la mémoire depuis le 2.* version. S'il vous plaît recherche pour "supprimé les fonctions de la chaîne ici: http://www.xdebug.org/updates.php

Retiré fonctions

Supprimé le support pour le profilage de la Mémoire comme cela ne fonctionne pas correctement.

J'ai donc essayé un autre outil et il a bien fonctionné pour moi.

https://github.com/arnaud-lb/php-memory-profiler

C'est ce que j'ai fait sur mon serveur Ubuntu pour l'activer:

sudo apt-get install libjudy-dev libjudydebian1
sudo pecl install memprof
echo "extension=memprof.so" > /etc/php5/mods-available/memprof.ini
sudo php5enmod memprof
service apache2 restart

Et puis dans mon code:

<?php

memprof_enable();

// do your stuff

memprof_dump_callgrind(fopen("/tmp/callgrind.out", "w"));

Enfin, ouvrir le callgrind.out le fichier avec KCachegrind

18voto

zombat Points 46702

Eh bien, cela peut ne pas être exactement ce que vous cherchez, mais PHP ne sont un couple de fonctions intégrées qui permettront de sortie utilisation de la mémoire. Si vous voulais juste voir combien de mémoire d'un appel de fonction, vous pouvez utiliser memory_get_peak_usage() avant et après l'appel, et de la différence.

Vous utilisez la même technique autour de vos données à l'aide de très similaire fonction memory_get_usage().

Assez simples, mais il est un moyen rapide de vérifier un morceau de code. Je suis d'accord que xdebug mem deltas peut-être trop détaillé pour être utile parfois, j'ai donc souvent simplement l'utiliser pour affiner à une section de code, puis vidage spécifiques, l'utilisation de la mémoire pour les petits morceaux manuellement.

0voto

2upmedia Points 551

http://geek.michaelgrace.org/2012/04/tracing-php-memory-usage-using-xdebug-and-mamp-on-mac/

Je suis sur un Mac, donc si vous êtes sur Windows, vous aurez pour tester cela, mais cela fonctionne pour moi.

J'ai modifié mon tracefile-analyzer.php fichier et ajout du chemin d'accès à l'exécutable PHP en haut de sorte que vous pouvez l'appeler dans le terminal normal de script unix.

#!/Applications/MAMP/bin/php5.3/bin/php
<?php
if ( $argc <= 1 || $argc > 4 )
{

N'oubliez pas de faire un chmod ce fichier à 755.

Vous pouvez facilement créer un rubis watchr script pour appeler automatiquement le script à chaque fois qu'il crée un profil de la mémoire de fichiers (*.xt). De cette façon, vous pouvez conserver le tester et de voir vos progrès sans avoir à exécuter la commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X