2010-11-17 6 views
17

Czy to jest nawet możliwe w PHP?Jak uzyskać czas w PHP z dokładnością nanosekundową?

Jeśli nie, jaka jest najwyższa dostępna precyzja?

+0

Po prostu z czystej ciekawości, dlaczego potrzebujesz nanosekundowej precyzji w PHP? – meagar

+2

Robię coś z synchronizacją czasu, gdzie program pyta serwer zdalny o jego czas. Java może dać czas w nanosekundach, więc pomyślałem, że byłoby fajnie, gdybym mógł to zrobić PHP, zamiast marnować dodatkową precyzję. – Matt

Odpowiedz

34

Funkcja microtime jest tym, czego szukasz.

PHP nie dostarcza funkcji o precyzji większej niż mikrosekundy.

Można użyć funkcji system uzyskać wartość prosto z urządzenia, jeśli używasz systemu Linux:

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

%s to ilość sekund, dołączane przez %N, która to kwota nanosekund.

+1

+1 Wymienienie innej opcji (wcześniej). – Gumbo

+0

Używam systemu Linux, ale z jakiegoś powodu, który zwraca 0. Czy to nie działa na lighttpd? – Matt

+0

@Matt, poprawiono argumenty na 'date', powinno działać teraz. –

9

microtime() to najwyższa precyzja z wykorzystaniem słownictwa PHP. Można również wykonać wywołanie systemowe za pomocą Uniksa date i określić format %N, jeśli potrzebujesz dokładności nanosekund. Unix ntp_gettime() ma jeszcze wyższą rozdzielczość i zwraca dane jitter/wander/stabilności/przesunięcia/kalibracji.

+0

Ah, miałem nadzieję, że będzie coś wyższego niż to = [ – Matt

2

Teraz z tym rozszerzeniem można nanosekundować taktowanie http://pecl.php.net/hrtime. Jest to jednak klasa stopera, która zapewnia najwyższą możliwą rozdzielczość na różnych platformach.