Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Timer
Forum PHP.pl > Forum > Przedszkole
Dominator
Witajcie, chcę napisać timer (dot. czas zamawiania [w ile sekund ktoś zamówi nagrodę], czyli wchodzi na stronę A to rozpoczyna liczyć -> na stronie B też liczy -> i na stronie C zatrzymuje i pokazuje w ile zamówił nagrodę) i według doniesień mego znajomego mam odjąć datę która jest od microtime(); .

Problem w tym że pokazuje mi aktualne microtime(); - zobaczcie sami.

---
Jestem taki ciut lewy w PHP więc proszę, nie krytykujcie mnie bo się uczę.
---

  1. <?php
  2.  
  3. $czaspoczatkowy = microtime(true);
  4.  
  5. $czaskoncowy = microtime(true);
  6. $czaszamawiania = $czaskoncowy - $czaspoczatkowy;
  7.  
  8. $czaszamawianianew = $czaszamawiania - date('H:i:s');
  9.  
  10. echo "Zamowiles nagrode w ciagu $czaszamawianianew sekund";
  11. ?>
Giluś
  1. <?php
  2. $start = getmicrotime();
  3. echo 'W tym miejscu znajduje się zasadnicza część skryptu';
  4. $koniec = getmicrotime();
  5. echo 'Strona wygenerowana w '.($koniec - $start).' sekund';
  6. ?>


I w ten sposób skrypt obliczy ile sekund trwała generacja : "W tym miejscu znajduje się zasadnicza część skryptu"
Dominator
Dziwne, wywala mi:

Fatal error: Call to undefined function getmicrotime() in /home/
Swirek
używamy funkcji microtime(); getmicrotime wywali powyższy błąd, dawniej się jej używało
Giluś
  1. function getmicrotime(){
  2. list($usec, $sec) = explode(" ",microtime());
  3. return ((float)$usec + (float)$sec);
  4. }
crocodillo
Kiedyś sobie napisałem taką klasę, jak chcesz to możesz przerobić i wykorzystać na własne potrzeby:

  1. <?php
  2.  
  3. class timer {
  4.  
  5. private $tm;
  6. private $total;
  7. private $pause;
  8.  
  9. //-------------------------------------------------
  10.  
  11. function __construct($autoStart=false) {
  12.  
  13. $this->tm=null; // null: nie wystartował
  14. //$this->total=0;
  15.  
  16. if ($autoStart) $this->start();
  17. }
  18. //-------------------------------------------------
  19.  
  20. public function start($returnAsFloat=true) {
  21.  
  22. if ($this->tm===null) $this->total=0;
  23.  
  24. $this->tm = microtime(1);
  25. return $this->result($returnAsFloat);
  26.  
  27. }
  28.  
  29. //-------------------------------------------------
  30.  
  31. public function stop($returnAsFloat=true) {
  32.  
  33. if ($this->tm===null) return false;
  34.  
  35. if ($this->tm > 0 ){ // jeśli mniejsze od zera, to pauza włączona
  36. $this->total+=microtime(1)-$this->tm;
  37. }
  38.  
  39. $this->tm = null;
  40.  
  41. return $this->result($returnAsFloat);
  42. }
  43.  
  44. //-------------------------------------------------
  45.  
  46. public function restart($returnAsFloat=true) {
  47.  
  48. $this->tm=null;
  49. return $this->start($returnAsFloat);
  50. }
  51.  
  52. //-------------------------------------------------
  53.  
  54. public function pause($returnAsFloat=true) {
  55.  
  56. if ($this->tm===null) return false;
  57. if ($this->tm >0 ) { // jeśli < 0to pauza już włączona była
  58. $this->total+=microtime(1)-$this->tm;
  59. }
  60.  
  61. $this->tm=-1; // -1 oznacza pauzę
  62.  
  63. return $this->result($returnAsFloat);
  64. }
  65.  
  66. //-------------------------------------------------
  67.  
  68. function result($returnAsFloat=true) {
  69.  
  70. //if ($this->tm===null) return false;
  71.  
  72. $t=$this->total;
  73. if ($this->tm>0) { // jeśli <0 to pauza
  74. $t+=microtime(1)-$this->tm;
  75. }
  76.  
  77. if (!$returnAsFloat) $t=round($t*1000000);
  78. return $t;
  79. }
  80. }
  81. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.