2010-04-09 10 views
40

Para un perfil muy simple utilizo microtime() así:Perfilado de PHP con microtime(): ¿Tiempo negativo?

$now = microtime(); 
for (...) { 
    // do something 
    echo microtime() - $now; 
    $now = microtime(); 
} 

Ahora, la salida de la línea de echo parece completamente al azar, es decir, que esperaba fluctuaciones, pero no esperan números negativos apareciendo.

Sin embargo, un resultado típico contiene ~ 1/3 números negativos. Confirmé esto en Solaris (PHP 5.0.x) y WinVista (PHP 5.2.3).

¿Qué diablos está pasando aquí? ¿He inventado accidentalmente una máquina del tiempo?

+4

Sí U tiene !!!!! :) Déjame saber para controlarlo ... –

+1

esto es algo que noté también pero nunca me molesté en investigar, tengo curiosidad por el guión :) – ChrisR

Respuesta

60

Si desea realizar operaciones sobre lo que devuelve microtime, debe establecer el parámetro "get as float" en true (su valor predeterminado es false).

http://www.php.net/manual/en/function.microtime.php

$now = microtime(true); 
for (...) { 
    // do something 
    echo microtime(true) - $now; 
    $now = microtime(true); 
} 
+2

Clave para controlar la máquina del tiempo !!!! –

+2

Sí, sí. Leer la documentación a veces ayuda. ¡Gracias por la respuesta! – Boldewyn

+14

Para completar la respuesta de Arkh: La respuesta de 'microtime()' sin 'get_as_float' es * string *' sprintf ('% f% d', $ microsegundos, time()) '. ¿Bajo qué circunstancias alguien necesitará esta representación? – Boldewyn

Cuestiones relacionadas