Dans les systèmes Linux, TOP et HTOP sont des outils externes couramment utilisés, qui peuvent aider les utilisateurs à surveiller les performances du système en temps réel et à afficher des informations détaillées sur le CPU, la mémoire, les processus, etc. GetUsage () est une fonction fournie par PHP, qui peut obtenir des informations sur l'utilisation des ressources de processus. Ainsi, peut- on remplacer () remplacer les outils de surveillance externes tels que le haut ou le HTOP ? Nous explorerons ce problème dans cet article et discuterons de la façon d'implémenter des fonctionnalités similaires en PHP.
GetUsage () est une fonction intégrée en PHP qui renvoie des informations détaillées sur l'utilisation des ressources de processus. Cette fonction est généralement utilisée pour obtenir le temps d'utilisation du processeur, l'utilisation de la mémoire, etc. du processus, mais il ne fournit pas de données de surveillance en temps réel au niveau du système comme TOP ou HTOP . Il fournit uniquement l'utilisation des ressources du processus PHP qui appelle la fonction, et non l'état des ressources de l'ensemble du système.
La fonction getUsage () renvoie un tableau contenant des statistiques sur l'utilisation des ressources de processus. Le contenu d'un tableau comprend généralement:
RU_MAXRSS : L'ensemble de mémoire résidente maximale du processus (unité: octets)
RU_IXRSS : Processus Utilisation de la mémoire partagée (unité: octets)
RU_IDRSS : traite l'utilisation de la mémoire non partagée (unité: octets)
RU_ISRSS : Utilisation de la bibliothèque partagée du processus (Unité: octets)
RU_MINFLT : Nombre de manquements de page (État utilisateur)
ru_majflt : nombre de pages manquantes de page (état du noyau)
ru_nswap : nombre d'échanges
ru_inblock : entrez le nombre d'opérations de bloc
ru_oublock : opérations de blocs de sortie
ru_msgsnd : nombre de messages envoyés
ru_msgrcv : nombre de messages reçus
ru_signals : nombre de signaux reçus
RU_NVCSW : Nombre de temps de commutation de contexte (État de l'utilisateur)
RU_NIVCSW : Nombre de commutateurs de contexte (état du noyau)
Bien que GetTrusage () puisse fournir une certaine utilisation des ressources au niveau du processus, il a les principales différences suivantes par rapport aux outils externes tels que TOP et HTOP :
La surveillance de la surveillance : GetUsage () ne peut obtenir que l'utilisation des ressources du script PHP actuel, tandis que Top et HTOP peuvent afficher l'utilisation globale des ressources au niveau du système, y compris tous les processus en cours d'exécution.
En temps réel : TOP et HTOP sont des outils de mise à jour en temps réel qui peuvent afficher une utilisation dynamique des ressources, et GetUsage () ne peut renvoyer les données de ressources qu'à un certain moment lorsqu'elle est appelée et ne peut pas être mise à jour dynamiquement.
La surveillance de la granularité : le haut et le HTOP fournissent des informations de processus plus détaillées, y compris l'état du processus, le pourcentage d'utilisation du processeur, l'utilisation de la mémoire, etc., tandis que les données fournies par GetUsage () sont relativement concises et manquent d'informations de surveillance plus riches.
Informations système : Top et HTOP peuvent également afficher l'utilisation des ressources matérielles au niveau du système, telles que la mémoire totale, l'espace d'échange, la charge du processeur, etc., et getUsage () concerne complètement l'utilisation des ressources du processus lui-même.
Bien que GetTrusage () ne puisse pas complètement remplacer le haut ou le HTOP , il peut toujours fournir aux développeurs des informations utiles, en particulier lorsque l'analyse des performances de scripts PHP spécifiques est nécessaire.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Obtenez le actuel PHP Utilisation des ressources du processus</span></span><span>
</span><span><span class="hljs-variable">$usage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
</span><span><span class="hljs-comment">// Afficher l'utilisation des ressources</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ensemble de mémoire résidente maximale: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_maxrss"</span></span><span>] . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Statut de l'utilisateur CPU temps: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_utime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"État du noyau CPU temps: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_stime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans l'exemple ci-dessus, nous appelons GetUsage () pour obtenir l'utilisation des ressources du processus PHP actuel et imprimer des informations telles que l'ensemble de mémoire résident maximum et le temps de processeur. Grâce à ces données, les développeurs peuvent comprendre la consommation de ressources du script pendant le fonctionnement.
Si vous devez surveiller l'utilisation des ressources des scripts PHP pendant l'exécution, vous pouvez appeler régulièrement getRusage () et calculer les modifications des ressources. Par exemple, l'utilisation des ressources peut être obtenue à chaque fois dans une boucle, implémentant ainsi un système de surveillance simple:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_usage</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
}
</span><span><span class="hljs-variable">$startUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// simulation PHP Exécution des scripts</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Supposons que le script s'exécute 2 Deuxième</span></span><span>
</span><span><span class="hljs-variable">$endUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// Calculez la différence</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Modifications d'utilisation de la mémoire: "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>]) . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU temps变化 (Statut de l'utilisateur): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU temps变化 (État du noyau): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
De cette façon, vous pouvez avoir une idée approximative des changements de ressources des scripts PHP pendant l'exécution.
Bien que GetTrusage () puisse fournir certaines fonctions de surveillance des processus dans PHP, il ne peut pas remplacer les fonctions complètes d'outils tels que TOP ou HTOP . Pour les développeurs, GetTrusage () ressemble plus à un outil pour aider à régler les performances qu'un outil complet de surveillance du système. Si vous avez besoin d'une surveillance du système en temps réel et complète, TOP et HTOP sont sans aucun doute plus applicables.
Cependant, si vous souhaitez une surveillance des ressources au niveau du processus dans PHP, GetTrusage () est toujours un outil très utile, en particulier lors de l'exécution de certaines opérations critiques, ce qui peut aider les développeurs à obtenir et à analyser les goulots d'étranglement des performances du processus en temps réel.
GetUsage () peut fournir une certaine utilisation des ressources de processus, mais il ne peut pas remplacer complètement les outils de surveillance au niveau du système tels que TOP ou HTOP . Si votre exigence est de surveiller les performances d'un script PHP spécifique, c'est un outil très efficace. Cependant, pour une surveillance complète et en temps réel, TOP et HTOP sont encore des choix plus appropriés.