Loading:

Promocja Helion.pl

Jak policzyć czas wykonywania skryptu, generowania strony PHP

Aby policzyć czas wykonania skryptu użyje funkcji getmicrotime().



Napisz Artykuł

Listing


<?php
// zapisujemy czas początkowy
$start = microtime();
/* właściwa część kodu */
// np. pętla "nicnierobiąca" z milionem iteracji
for($i=1;$i<=1000000;$i++);
/* właściwa część kodu - koniec */
// zapisujemy czas końcowy
$koniec = microtime();
// proste operacje na zapisanych czasach
// w celu wyswietlenia gotowego wyniku
$start = explode(' ', $start);
$koniec = explode(' ', $koniec);
$roznica = ($koniec[0]+$koniec[1])-($start[0]+$start[1]);
// wyświetlenie wyniku
echo 'Skrypt wykonał się w '.$roznica.' sekund.';
?>


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=1805

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
Czy da się jakoś ograniczyć liczbę cyfr po przecinku np. do pięciu?
autor: Mayke512 | 114 | 2009-03-06 20:20:41


Tak, wystarczy później dodać podany skrypt:
autor: Divix | 115 | 2009-03-06 20:43:02


chyba coś mi nie wyszło bo nie działa ;p
  • Zobacz kod dodany do tego wpisu
    • <?php
      // zapisujemy czas początkowy
      $start = microtime();
      /* właściwa część kodu */
      // np. pętla "nicnierobiąca" z milionem iteracji
      for($i=1;$i<=1000000;$i++);
      /* właściwa część kodu - koniec */
      // zapisujemy czas końcowy
      $koniec = microtime();
      // proste operacje na zapisanych czasach
      // w celu wyswietlenia gotowego wyniku
      $start = explode(' ', $start);
      $koniec = explode(' ', $koniec);
      $nowa_roznica = round($roznica, 5); //gdzie 5 wskazuje ilość liczb po przecinku
      $roznica = ($koniec[0]+$koniec[1])-($start[0]+$start[1]);
      // wyświetlenie wyniku
      echo 'Wygenerowano w '.$roznica.' sekund.'; ?>
autor: Mayke512 | 118 | 2009-03-10 14:21:04


Właśnie sprawdziłem działa OK, i to z tego kodu co wkleiłeś, więc nie wiem :}
autor: Igor | 119 | 2009-03-10 15:45:26


No to nie wiem :) Sprawdziłem na localhost, sprawdziłem na ftp i nigdzie nie działa. Nic sie nie zmienia ciągle mam: Wygenerowano w 0.15702104568481 sekund (i podobne liczby) Może da się to zrobić jakoś inaczej? ;p
autor: Mayke512 | 120 | 2009-03-10 17:09:42


Źle robisz należy dać zmienną $nowa_roznica tuż przed echo, oraz wyświetlić $nowa_roznica zmienną, tak jak tutaj:
  • Zobacz kod dodany do tego wpisu
    •     *
            <?php
            // zapisujemy czas początkowy
            $start = microtime();
            /* właściwa część kodu */
            // np. pętla "nicnierobiąca" z milionem iteracji
            for($i=1;$i<=1000000;$i++);
            /* właściwa część kodu - koniec */
            // zapisujemy czas końcowy
            $koniec = microtime();
            // proste operacje na zapisanych czasach
            // w celu wyswietlenia gotowego wyniku
            $start = explode(' ', $start);
            $koniec = explode(' ', $koniec);
            $roznica = ($koniec[0]+$koniec[1])-($start[0]+$start[1]);
            $nowa_roznica = round($roznica, 5); //gdzie 5 wskazuje ilość liczb po przecinku
            // wyświetlenie wyniku
            echo 'Wygenerowano w '.$nowa_roznica.' sekund.'; ?>
       
autor: Divix | 121 | 2009-03-10 17:19:06


Znalazłem w googlach nieco inaczej i działa ;p Daje kod, może się komuś przyda (opisałem najważniejszą funkcje)
  • Zobacz kod dodany do tego wpisu
    • <html>

      <?php
      function cgs()
      {
      $czas = explode(" ", microtime());
      $a = (double)$czas[0];
      $b = (double)$czas[1];
      return $a + $b;
      }
      $start = cgs();
      ?>

      <?php
      $koniec = cgs();
      $ile = $koniec - $start;
      echo "Strona wygenerowana w " . substr($ile, 0, 5) . " sek."; // 5 to liczba znaków w wyniku czyli np. 2.5968 to 6 znaków.
      ?>

      </html>
autor: Mayke512 | 122 | 2009-03-10 17:22:40


Prosty sposób - dwie linie. W s., 5 miejsc po przecinku.
autor: Dawid Madzia | 424 | 2009-08-20 10:51:22


    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors