Ce face microtime / hrtime
microtime(true) returnează timestamp-ul curent ca număr zecimal, cu microsecunde după virgulă. Diferența dintre două apeluri îți spune cât a durat o bucată de cod, în secunde.
Fără true, rezultatul este un text de forma "0.33947000 1792407462" (microsecundele, apoi secundele), greu de folosit în calcule. Aproape mereu vrei varianta cu true.
Pentru măsurători foarte precise există hrtime(true), care returnează nanosecunde de la un moment arbitrar (de obicei pornirea calculatorului). Nu poate fi transformată în dată, dar nu este afectată de schimbarea ceasului sistemului.
Parametri
| Parametru | Descriere |
|---|---|
$as_float |
Opțional. true pentru un număr zecimal de secunde, false pentru textul în două părți. |
Ce returnează
Un număr zecimal (cu true) sau un text "microsecunde secunde". hrtime(true) returnează un întreg în nanosecunde, iar hrtime() un tablou [secunde, nanosecunde].
Exemple
Exemplul 1: Cele două forme ale rezultatului
<?php
var_dump(microtime());
var_dump(microtime(true));
Rezultat posibil (diferă la fiecare rulare)
string(21) "0.33947000 1792407462"
float(1792407462.339472)
Exemplul 2: Cât durează un cod
<?php
$start = microtime(true);
$suma = 0;
for ($i = 0; $i < 1_000_000; $i++) {
$suma += $i;
}
$durata = microtime(true) - $start;
printf("Gata în %.4f secunde", $durata);
Rezultat posibil (diferă la fiecare rulare)
Gata în 0.0071 secunde
Exemplul 3: Măsurare precisă cu hrtime
Împarte la 1.000.000 ca să transformi nanosecundele în milisecunde.
<?php
$start = hrtime(true);
usleep(25000); // o pauză de 25 ms
$ns = hrtime(true) - $start;
echo "Pauza a durat " . round($ns / 1e6, 2) . " ms";
Rezultat posibil (diferă la fiecare rulare)
Pauza a durat 25.14 ms
Greșeli frecvente
- Scazi două rezultate ale lui
microtime()fărătrue. Scazi texte, nu numere, și rezultatul este greșit sau dă eroare. - Folosești
microtimeca să generezi identificatori unici sau token-uri. Valorile sunt previzibile. Foloseșterandom_bytessaurandom_int.