Maison >développement back-end >tutoriel php >Explication détaillée de la façon de vérifier l'utilisation de la mémoire et du processeur en php

Explication détaillée de la façon de vérifier l'utilisation de la mémoire et du processeur en php

伊谢尔伦
伊谢尔伦original
2017-06-29 13:13:235029parcourir

1. Afficher l'utilisation de la mémoire

Observer l'utilisation de la mémoire de votre programme peut vous permettre de mieux optimiser votre code.
PHP dispose d'un mécanisme de récupération de place et d'un mécanisme de gestion de la mémoire très complexe. Vous pouvez découvrir la quantité de mémoire utilisée par votre script. Pour connaître l'utilisation actuelle de la mémoire, vous pouvez utiliser la fonction ?memory_get_usage() , et si vous souhaitez connaître l'utilisation maximale de la mémoire, vous pouvez appeler la memory_get_peak_usage()Fonction.

echo "Initial: ".memory_get_usage()." bytes \n";
/* 输出
Initial: 361400 bytes
*/
// 使用内存
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
// 删除一半的内存
for ($i = 0; $i < 100000; $i++) {
unset($array[$i]);
}
echo "Final: ".memory_get_usage()." bytes \n";
/* prints
Final: 885912 bytes
*/
echo "Peak: ".memory_get_peak_usage()." bytes \n";
/* 输出峰值
Peak: 13687072 bytes
*/

2. Vérifiez l'utilisation du processeur
Utilisez la fonction ?getrusage() pour vous informer de l'utilisation du processeur. Notez que cette fonctionnalité n'est pas disponible sous Windows.

print_r(getrusage());
/* 输出
Array
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ru_maxrss] => 12692
[ru_ixrss] => 764
[ru_idrss] => 3864
[ru_minflt] => 94
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => 6269
[ru_stime.tv_sec] => 0
)
*/

Cette structure semble très obscure, à moins de connaître très bien le CPU. Quelques explications ci-dessous :

ru_oublock : opération de sortie de bloc
ru_inblock : opération d'entrée de bloc
ru_msgsnd : message envoyé
ru_msgrcv : message reçu
ru_maxrss : taille maximale de l'ensemble de rétention des résidents
ru_ixrss : taille totale de la mémoire partagée
ru_idrss : taille totale de la mémoire non partagée
ru_minflt : recyclage de pages
ru_majflt : invalidation de page
ru_nsignals : signaux reçus
ru_nvcsw : changement de contexte actif
ru_nivcsw : Changement de contexte passif
ru_nswap : Zone d'échange
ru_utime.tv_usec : Temps du mode utilisateur (microsecondes)
ru_utime.tv_sec : Temps du mode utilisateur (secondes)
ru_stime.tv_usec : Temps du noyau système (microsecondes)
ru_stime.tv_sec : Temps du noyau système (secondes)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn