php time () i microtime () czasami nie zgadzają się

Podczas rejestrowania danych za pomocą microtime () (przy użyciu PHP 5) natknąłem się na pewne wartości, które wydawały się nieco nie w fazie w stosunku do znacznika czasu mojego pliku dziennika, więc po prostu próbowałem porównać wyjście time () i microtime () za pomocą prostego skryptu (usleep jest tutaj tylko w celu ograniczenia danych wyjściowych):

<?php
for($i = 0; $i < 500; $i++) {
    $microtime = microtime();
    $time = time();
    list($usec, $sec) = explode(" ", $microtime);
    if ((int)$sec > $time) {
        echo $time . ' : ' . $microtime . '<br>';
    }
    usleep(50000);
}
?>

Teraz, gdy $ microtime jest zadeklarowane przed $ time, spodziewam się, że będzie on mniejszy i nic nie powinno być wyświetlane; nie jest to jednak oczywiste i co jakiś czas $ czas jest mniejszy niż sekundy zwrócone z microtime (), jak w tym przykładzie (obcięte) dane wyjściowe:

1344536674 : 0.15545100 1344536675
1344536675 : 0.15553900 1344536676
1344536676 : 0.15961000 1344536677
1344536677 : 0.16758900 1344536678

Teraz jest to tylko mała luka; jednak zauważyłem kilka serii, w których różnica (całkiem) jest większa niż sekunda ... więc jak to możliwe?

questionAnswers(2)

yourAnswerToTheQuestion