2010-11-17 8 views
17

¿Esto es posible incluso en PHP?¿Cómo obtener tiempo en PHP con precisión de nanosegundos?

Si no, ¿cuál es la precisión más alta disponible?

+0

Solo por curiosidad, ¿por qué necesita precisión de nanosegundos en PHP? – meagar

+2

Estoy haciendo algo que implica sincronización de tiempo, donde un programa le pregunta al servidor remoto por su tiempo. Java puede dar el tiempo en nanosegundos, por lo que pensé que sería genial si pudiera conseguir que PHP también lo hiciera en lugar de desperdiciar la precisión adicional. – Matt

Respuesta

34

La función microtime es lo que estás buscando.

PHP no proporciona una función que tenga una precisión mayor que microsegundos.

Usted puede utilizar la función system para obtener el valor directamente desde la máquina si está ejecutando Linux:

$nanotime = system('date +%s%N'); 

%s es la cantidad de segundos, anexado por %N, que es la cantidad de nanosegundos.

+1

+1 Por mencionar otra opción (anterior). – Gumbo

+0

Estoy ejecutando linux, pero por algún motivo devuelve 0. ¿No funciona en lighttpd? – Matt

+0

@Matt, corrigió los argumentos a 'date', debería funcionar ahora. –

9

microtime() es la precisión más alta que utiliza el vocabulario de PHP. También puede realizar una llamada al sistema utilizando Unix date y especificar el formato %N si necesita una precisión de nanosegundos. Unix ntp_gettime() tiene una resolución aún mayor y devuelve datos de jitter/wander/stability/shift/calibration.

+0

Ah, esperaba que hubiera algo superior a eso = [ – Matt

2

Ahora con esta extensión es posible sincronizar en nanosegundos http://pecl.php.net/hrtime. Sin embargo, es una clase de cronómetro implementada para ofrecer la mayor resolución posible en diferentes plataformas.

Cuestiones relacionadas