getrusage în PHP

Procese și mediu PHP 4+ (pe Windows: PHP 7.0+)

Returnează resursele folosite de proces: timp de procesor, memorie maximă, citiri de pe disc.

Sintaxă
getrusage(int $mode = 0): array|false

Ce face getrusage

getrusage returnează statisticile sistemului de operare pentru procesul curent. Cele mai utile chei sunt timpul de procesor petrecut în cod (ru_utime.tv_sec și ru_utime.tv_usec) și în sistem (ru_stime.*), plus ru_maxrss (memoria maximă).

Spre deosebire de măsurarea cu microtime, timpul de procesor nu include așteptarea după baza de date, rețea sau sleep. Cu parametrul 1 primești statisticile proceselor copil.

Parametri

Parametru Descriere
$mode Opțional. 0 pentru procesul curent, 1 pentru procesele copil terminate.

Ce returnează

Un tablou cu statistici sau false la eroare.

Exemple

Exemplul 1: Timp de procesor față de timp real

Pauza cu usleep se vede în timpul real, dar nu în timpul de procesor.

<?php
function timp_procesor(): float
{
    $r = getrusage();
    return $r["ru_utime.tv_sec"] + $r["ru_utime.tv_usec"] / 1e6;
}

$start = microtime(true);
$cpu = timp_procesor();

usleep(500000);
for ($i = 0, $s = 0; $i < 3000000; $i++) {
    $s += $i;
}

printf("Timp real: %.2f s\n", microtime(true) - $start);
printf("Timp procesor: %.2f s", timp_procesor() - $cpu);

Rezultat posibil (diferă la fiecare rulare)

Timp real: 0.54 s
Timp procesor: 0.04 s

Greșeli frecvente

  • Folosești doar tv_sec și primești 0 pentru operații scurte. Adaugă și tv_usec / 1e6 (microsecundele).

Comenzi înrudite

  • memory_get_usage / memory_get_peak_usage: Returnează câtă memorie folosește scriptul acum (memory_get_usage) sau maximul atins (memory_get_peak_usage).
  • sys_getloadavg: Returnează încărcarea medie a serverului în ultimele 1, 5 și 15 minute.
  • microtime / hrtime: Returnează momentul curent cu precizie de microsecunde. Este folosită pentru măsurarea duratei unui cod.