php time () e microtime () às vezes não concordam

Ao registrar alguns dados usando microtime () (usando PHP 5), encontrei alguns valores que pareciam um pouco fora de fase em relação ao timestamp do meu arquivo de log, então tentei comparar a saída de time () e microtime () com um script simples (o usleep está aqui apenas para limitar a saída de dados):

<?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);
}
?>

Agora, como $ microtime é declarado antes de $ time, espero que seja menor, e nada deve ser produzido; no entanto, isso obviamente não é o caso, e de vez em quando, $ time é menor que os segundos retornados do microtime (), como nesta saída de exemplo (truncada):

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

Agora, isso é apenas uma pequena lacuna; no entanto, observei algumas séries em que a diferença é (bastante) mais do que um segundo ... então, como isso é possível?

questionAnswers(2)

yourAnswerToTheQuestion