[PHP] Jak wyliczyć czas generowania strony WWW lub wykonywania skryptu z dokładnością do mikrosekundy?
Chcesz wyliczyć ile czasu wykonuje się skrypt PHP, sprawdzić jak długo generuje się strona WWW lub z bardzo dużą dokładnością sprawdzić ile czasu upływa między poszczególnymi instrukcjami w skrypcie PHP.
Interwał czasu pomiędzy dwoma zdarzeniami, np. między początkiem i końcem strony WWW lub między instrukcjami w skrypcie można wyliczyć w mikrosekundach, a więc z bardzo dużą precyzją.
Sekundy często nie są miarodajne, bowiem wiele procesów w skryptach zachodzi w ułamkach sekund, dlatego jedynym rozwiązaniem jest policzenie odstępu czasu w mikrosekundach i podanie wyniku z dokładnością do dowolnej ilości miejsc po przecinku. Zobacz jak pokazać czas generowania strony lub wyliczyć ile czasu wykonują się instrukcje w skrypcie:
<?
// na początku strony
$czas = explode(" ",microtime());
$poczatek = $czas[1] + $czas[0];
?>
inne skrypty lub zawartość serwisu
<?
// na końcu strony
$czas = explode(" ",microtime());
$koniec = $czas[1] + $czas[0];
$wynik = sprintf("%0.5f",$koniec-$poczatek);
echo "Czas generowania strony w sekundach: $wynik";
?>
Przykład działania skryptu:
Czas generowania strony w sekundach: 0.00020
Funkcja microtime() zwraca dwie liczby oddzielone od siebie spacją - milisekundy i sekundy. Funkcja explode() pobiera liczby oddzielone spacją i przypisuje je do tablicy $czas. Pierwszym elementem są mikrosekundy, a drugim sekundy. Dodajemy obie wartości aby mieć początkową liczbę sekund i mikrosekund. Wynik umieszczamy w zmiennej $początek.
Teraz generujemy stronę, wykonujemy instrukcje lub podejmujemy inne działania, których czas chcemy obliczyć. Na koniec trzeba wykonać podobną operację wyliczającą aktualny czas. Po odjęciu czasu początkowego od końcowego wyjdzie nam różnica w sekundach i milisekundach, którą możemy wypisać na ekran. Przy prostych instrukcjach lub stronach, zwykle nie ma szans aby uzyskać czas bliski jednej sekundzie, są to zawsze ułamki sekund.
Wyrażenie formatujące %0.5f pokazuje wynik z dokładnością 5 miejsc po przecinku. Możesz ustalić więcej pozycji, jednak taka dokładność jest w zupełności wystarczająca.