Voglio presentare una semplice classe per gestire un timer.
L'idea è nata dalla necessità di misurare il tempo impiegato ad eseguire uno script...al tempo stesso volevo un codice semplice e riutilizzabile per risolvere definitivamente il problema.
L'interfacccia della classe è davvero molto semplice e ricorda quella di un cronometro:
ok...qui la classecodice:§ Caratteristiche Unità di misura : [ms] Risoluzione : 1 [ms] Tempo misurabile : ± 24 giorni (int a 32 bit) § Interfaccia base ::Read() Ritorna il tempo misurato in ms (valore intero) ::Reset() Resetta il cronometro § Interfaccia avanzata ::Stop() Mette in pausa il cronometro ::Restart() Fa ripartire il cronometro ::Reset($elapsed) Resetta in modo che il tempo trascorso sia pari a $elapsed $elapsed può essere negativo NOTA: si può anche usare come parametro nel costruttore
Un esempio semplice semplice di utilizzo (suppongo la classe si trovi nel file timer.php)codice:class Timer { // costruttore function Timer($elapsed = 0) { $this->b_stop = false; $this->reset($elapsed); } // ritorna millisecondi trascorsi function read(){ return( $this->abstime()-$this->s_time ); } // resetta il timer function reset($elapsed = 0){ $this->s_time = $this->p_time = ($this->now()-$elapsed); } // mette in pausa (read() ritornerà sempre lo stesso valore) function stop(){ $this->b_stop = true; $this->p_time = $this->now(); } // toglie pausa function restart(){ $this->b_stop = false; $this->s_time += ($this->now() - $this->p_time); } // ritorna tempo assoluto in millisecondi(tenendo conto della pausa) function abstime(){ return($this->b_stop?$this->p_time:$this->now()); } // ritorna tempo assoluto in ms function now(){ list($usec, $sec) = explode(" ",microtime()); return ( (int)(1000*((float)$usec + (float)$sec))); } var $s_time; //tempo iniziale var $p_time; //tempo al momento della pausa var $b_stop; //in pausa? }
Per i (PHP5) perfezionisti:codice:<?php require 'timer.php'; $timer = new Timer(); // ciclo per far passare qualche frazione di secondo for($i=0; $i<2000000; $i++){ } echo "Tempo trascorso : ".$timer->read()."[ms] "; ?>
le tre variabili dovrebbero essere private
il metodo now() statico
il metodo abstime() privato
Per il resto che devo dire? Tutto lì...ma non dite che non vi avevo avvertito! Era solo una (micro)pillola!
![]()

Rispondi quotando
la mia non l'ha cacata nessuno... vabbè che non è sto gran ché

)
