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ă șitv_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.