2010-11-17 15 views
17

Questo è possibile anche in PHP?Come ottenere tempo in PHP con precisione al nanosecondo?

Se no, qual è la precisione più elevata disponibile?

+0

Solo per curiosità, perché hai bisogno di precisione in nanosecondi in PHP? – meagar

+2

Sto facendo qualcosa che coinvolge la sincronizzazione dell'ora, in cui un programma chiede al server remoto per il suo tempo. Java può dare il tempo in nanosecondi, quindi ho pensato che sarebbe stato bello poter ottenere che PHP lo facesse piuttosto che sprecare la precisione in più. – Matt

risposta

34

La funzione microtime è quello che stai cercando.

PHP non fornisce una funzione che ha una maggiore precisione di microsecondi.

è possibile utilizzare la funzione di system per ottenere il valore direttamente dalla macchina, se si sta usando Linux:

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

%s è la quantità di secondi, apposta da %N, che è la quantità di nanosecondi.

+1

+1 Per menzionare un'altra opzione (precedente). – Gumbo

+0

Sto eseguendo Linux, ma per qualche motivo restituisce 0. Non funziona su lighttpd? – Matt

+0

@Matt, corretto gli argomenti su 'date', dovrebbe funzionare ora. –

9

microtime() è la più alta precisione usando il vocabolario di PHP. È inoltre possibile effettuare una chiamata di sistema utilizzando Unix date e specificare il formato %N se è necessaria una precisione di nanosecondo. Unix ntp_gettime() ha una risoluzione ancora maggiore e restituisce i dati di jitter/wander/stability/shift/calibration.

+0

Ah, speravo che ci fosse qualcosa di più alto di quello = [ – Matt

2

tempistica Ora, con questa estensione è nanosecondo è possibile http://pecl.php.net/hrtime. Eppure è una classe di cronometro implementata per soddisfare la massima risoluzione possibile su piattaforme diverse.