Ciao a tutti,
in questo primo pomeriggio di agosto vorrei condividere con voi una classe che spesso utilizzo durante i miei vari lavori: SCN_Timer.

SCN_Timer è una classe PHP5 che permette di registrare i tempi di esecuzione delle istruzioni presenti nei vostri script e/o progetti vari; questa classe è nata dalla mia esigenza di tracciare i tempi di esecuzione di alcuni web service e quindi ho pensato che potrebbe fare comodo anche a voi.


Utilizzo

L'utilizzo di SCN_Timer è molto semplice quindi vediamo subito un esempio concreto:

Codice PHP:
// Includiamo la classe per poterla utilizzare
require_once 'SCN_Timer.php';

// Costruiamo il nostro timer
$timer = new SCN_Timer();

// Facciamo partire il timer
$timer->start();

// Aggiungiamo un breakpoint
$timer->addBreakPoint('Primo breakpoint');

// Aggiungiamo un altro breakpoint
$timer->addBreakPoint('Secondo breakpoint');

// Fermiamo il timer
$timer->stop();

// Stampiamo i risultati
print_r($timer->getReport());
L'esempio sopra riportato è il modo più veloce di utilizzare SCN_Timer ma non è l'unico.


AutoStart

Come avete visto nell'esempio prima di utilizzare il timer occorre farlo partire
Codice PHP:
$timer->start();
ma è anche possibile utilizzare l'autoStart del timer in modo che esso parta subito dopo la costruzione
Codice PHP:
// Il flag TRUE abilita l'autoStart del timer
$timer = new SCN_Timer(true);

// Potete vederla come una forma abbreviata di
$timer = new SCN_Timer();
$timer->start();
Vi consiglio di utilizzare l'autoStart quando dovete usare immediatamente il timer mentre vi consiglio di non utilizzarlo quando volete utilizzare il timer in un secondo momento (ma volete comunque istanziarlo prima).


Timer multipli

Probabilmente vorrete utilizzare più di un timer durante l'esecuzione dei vostri script per ottenere dati più specifici ma vorrete anche sapere il tempo di esecuzione rapportato al totale del tempo trascorso.

Chiariamo con un esempio concreto:

Codice PHP:
// Includiamo la classe per poterla utilizzare
require_once 'SCN_Timer.php';

// Costruiamo il nostro timer
$timer = new SCN_Timer();

// Facciamo partire il timer
$timer->start();

// Aggiungiamo un breakpoint
$timer->addBreakPoint('Primo breakpoint del primo timer');

// Secondo timer
// utilizzo l'autostart perchè lo utilizzo subito
$secondTimer = new SCN_Timer(true);

// Aggiungo un breakpoint al mio secondo timer
$secondTimer->addBreakPoint('Primo breakpoint del secondo timer');

// Aggiungo un altro breakpoint al secondo timer
$secondTimer->addBreakPoint('Secondo breakpoint del secondo timer');

// Termino l'esecuzione del secondo timer
$secondTimer->stop();

// Ora aggiungo il secondo timer al primo timer
$timer->addBreakPoint('Secondo breakpoint del primo timer', $secondTimer);

// Fermo il primo timer
$timer->stop();

// Stampo i risultati
print_r($timer->getReport());
Ora, se stampate il report, vedrete che il primo timer include anche il report del secondo timer.


Resettare il timer

Per resettare il timer non dovete fare altro che chiamare il metodo:
Codice PHP:
// Resetto il timer
$timer->reset();

Conclusioni

Utilizzare la classe SCN_Timer mi ha fatto risparmiare parecchio tempo durante i miei lavori e spero che possa tornare utile anche a voi durante i vostri.

Per scaricare la classe SCN_Timer cliccate qui

Nel caso abbiate dubbi, suggerimenti o critiche non esitate a rispondere.