Position actuelle: Accueil> Derniers articles> GetUsage () Analyse de l'unité de données renvoyée

GetUsage () Analyse de l'unité de données renvoyée

M66 2025-07-08
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Partie du programme qui n&#39;est pas lié à cet article</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à lire PHP Articles techniques。\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1></span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>() Analyse de l&#39;unité de données renvoyée</h1>

<p>exister PHP milieu,<code></span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>()

Ce code sortira quelque chose de similaire à ce qui suit (différents systèmes peuvent différer légèrement):

 
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [ru_utime.tv_sec] => </span><span><span class="hljs-number">0</span></span><span>
    [ru_utime.tv_usec] => </span><span><span class="hljs-number">123456</span></span><span>
    [ru_stime.tv_sec] => </span><span><span class="hljs-number">0</span></span><span>
    [ru_stime.tv_usec] => </span><span><span class="hljs-number">7890</span></span><span>
    [ru_maxrss] => </span><span><span class="hljs-number">34560</span></span><span>
    ...
)

2. Description du champ et de l'unité
  • ru_utime.tv_sec / ru_utime.tv_usec
    Représente le temps du processeur utilisateur-état, en secondes et microsecondes respectivement. Les deux peuvent être additionnés pour obtenir un temps de temps précis à l'état utilisateur.
  • ru_stime.tv_sec / ru_stime.tv_usec
    Il indique le temps du processeur d'état du noyau, l'unité est la même que ci-dessus.
  • ru_maxrss
    Indique la taille de l'ensemble du résident maximal utilisé par le processus (taille du jeu de résident maximum). Sur Linux, l'unité est KB (kilobytes); Sur le macOS, l'unité est des octets, donc une attention particulière est requise.
  • ru_ixrss, ru_idrss, ru_isrss
    Ces champs représentent théoriquement l'utilisation de la mémoire de la mémoire partagée, de la mémoire de données non partagée et de la pile non partagée, mais ne sont généralement pas disponibles dans les systèmes modernes et la valeur de retour est 0 .
  • ru_minflt / ru_majflt
    Le nombre d'erreurs de page (exception manquante de page) est "Nombre de fois", pas l'heure.
  • ru_nswap
    Le nombre de fois qu'un processus échange est également le "nombre de fois".
  • ru_inblock / ru_oublock
    Nombre d'opérations d'entrée / sortie de bloc (telles que lire et écrire dans le système de fichiers), l'unité est "Nombre d'opérations de bloc", et non les octets.
  • ru_msgsnd / ru_msgrcv
    Le nombre de fois où le message est envoyé et reçu est "l'heure".
  • ru_signals
    Nombre de signaux reçus.
  • ru_nvcsw / ru_nivcsw
    Le nombre de changements de contexte volontaires / involontaires.

3. Exemple de conversion unitaire

Supposons que nous voulons obtenir le temps total du processeur utilisateur-état, nous pouvons l'écrire comme ceci:

 
</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-variable">$user_time</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-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_utime.tv_usec"</span></span><span>] / </span><span><span class="hljs-number">1e6</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Qui prend du temps pour les utilisateurs: <span class="hljs-subst">{$user_time}</span></span></span><span> Deuxième\n";

De même, la même opération peut être effectuée sur le temps d'état du noyau pour obtenir le temps total de l'utilisation du processeur du processus.

4. Choses à noter
  • Les unités renvoyées par différents systèmes d'exploitation peuvent varier, en particulier le champ Ru_maxrss .
  • Certains champs sont toujours 0 sur une plate-forme spécifique , car l'implémentation du système ne prend pas en charge cette collection de données.
  • GetTrusage () ne vous dira pas des données en temps réel sur les pics de mémoire et convient plus à l'analyse des performances que le contrôle limitant les ressources.

Conclusion

GetUsage () est un outil important fourni par PHP pour obtenir un aperçu de la consommation de ressources de script. Comprendre le sens et l'unité de sa valeur de retour aideront les développeurs à effectuer un réglage et une surveillance des performances plus détaillées.