PHP: Calcolare la durata di esecuzione di uno script

Per calcolare la durata di esecuzione di uno script in PHP possiamo utilizzare la funzione microtime.
Questa funzione restituisce la data attuale in microsecondi (un microsecondo equivale a un milionesimo di secondo). Di default restituisce una stringa nel formato "microsecondi secondi", dove al posto di secondi ci sarà il numero di secondi passati dal 1° gennaio 1970 e al posto di microsecondi ci sarà il numero di microsecondi da aggiungere al numero di secondi per avere un risultato preciso.
Dalla versione 5 di PHP è stato aggiunto un parametro che permette di far restituire alla funzione microtime il valore dei microsecondi direttamente come numero.
Se sul vostro server è ancora installata la versione 4 di PHP, potete creare una funzione come questa per ovviare al problema:
function microtime_float(){
	list($msec, $sec) = explode(' ', microtime());
	return ((float)$msec + (float)$sec);
}


Ci sono due metodi per calcolare la durata di esecuzione di uno script in PHP.
Il primo è quello più semplice ed è adatto a controlli rari. Consiste nel fare la differenza tra i microsecondi calcolati prima e dopo l'esecuzione dello script.
$start_microtime = microtime(true); // microtime_float() per PHP 4

// Script da eseguire

$end_microtime = microtime(true); // microtime_float() per PHP 4
$execution_time = $end_microtime - $start_microtime; // Tempo di esecuzione dello script in microsecondi


Il secondo metodo consiste nel creare una funzione che calcola la differenza del tempo passato da una sua chiamata all'altra salvando il valore iniziale in una variabile statica.
function getExecutionTime($reset = false){
	static $start_microtime = null;
	if($reset){
		$start_microtime = null;
	}
	if(is_null($start_microtime)){
		$start_microtime = microtime(true);
		return 0.0;
	}
	return microtime(true) - $start_microtime;
}

getExecutionTime();

// Script da eseguire
    		
$execution_time = getExecutionTime(); // Tempo di esecuzione dello script in microsecondi

// Secondo script da eseguire

$execution_time_2 = getExecutionTime(); // Tempo di esecuzione dei due script in microsecondi

getExecutionTime(true); // Azzero il valore iniziale

// Terzo script da eseguire

$execution_time_3 = getExecutionTime(); // Tempo di esecuzione del terzo script in microsecondi


In questa guida ho scritto anche la soluzione per risolvere il problema della funzione microtime in PHP 4, però il mio consiglio è quello di passare (dove possibile) alla versione stabile più aggiornata di PHP.

Guida scritta da il 30/12/2011.

Le ultime guide della categoria PHP:

comments powered by Disqus