La función time() es muy poco exacta para cierto tipo de tareas. Cuando necesitamos medir tiempos con una precisión menor al segundo tenemos que usar microtime() .
microtime() devuelve una cadena que contiene dos números separados por un espacio. Al igual que time() , devuelve el número de segundos transcurridos desde el 1 de enero de 1970 a las 12 de la noche (uséase, las 00:00:00). Sin embargo, microtime() no devuelve sólo el número de segundos como un dato entero, sino que también da la parte decimal. El primer número que devuelve esta función sería esa parte decimal y el segundo la parte entera (equivalente a lo que devolvería time() ).
Esto parece un poco lioso; intentaré aclararlo. Si convertimos ambas cifras a números y las sumamos, nos daría el número de segundos transcurridos desde el célebre 1 de enero, pero con parte decimal. Y esa parte decimal es la que necesitamos cuando queremos medir tiempos con precisión. Pongamos el siguiente código en una página PHP:
$m = microtime(); $t = time(); print("Los segundos (versión precisa) transcurridos son $m<br>"); print("Los segundos (versión entera) transcurridos son $t<br>");Nos devolvería algo como:
Los segundos (versión precisa) transcurridos son 1037896550 Los segundos (versión entera) transcurridos son 0.07883300 10378965501037896550 son los segundos transcurridos desde el célebre 1 de enero de 1970. Si emplearamos la función date() para formatear el número:
print(date("h:i:s a l F j, Y", $t)."<br>");Nos devolvería "05:37:22 pm Thursday November 21, 2002".
Medir el tiempo de ejecución de la páginaPara poder hacer algo útil con microtime() tenemos que extraer los números de la cadena:
$comienzo = explode(" ", $m); print("Los microsegundos son " . $comienzo[0] . "<br>"); print("Los segundos son " . $comienzo[1] . "<br>");Podemos usar esta función para averiguar el tiempo que tarda el servidor en producir una página. Si al comienzo de la misma hemos colocado eso de $m = microtime() al final de la misma escribiremos:
$comienzo = explode(" ", $m); $final = explode(" ", microtime()); $tiempo = ($final[1] + $final[0]) - ($comienzo[1] - $comienzo[0]); echo "Esta página fue generada en $tiempo segundos";No obstante, una medición aislada no suele ser significativa si lo que deseamos es saber qué páginas (o secciones dentro de una misma página) tardan más para ver que conviene optimizar. Para eso conviene hacer un buen número de mediciones y sacar la media.
Por Daniel Rodríguez Herrera
Usuarios que han visto este tema también han visto...
- Convertir HTML a ASCII en PHP
- Arreglar error con acentos en Google Coop
- Interfaz de navegación por pestañas con Ajax y PHP
- Leer archivos Excel desde PHP
- Ponle una marca a las imágenes de tu web
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.