php time () и microtime () иногда не согласуются
При регистрации некоторых данных с помощью microtime () (с использованием PHP 5) я столкнулся с некоторыми значениями, которые казались немного не в фазе относительно временной метки моего файла журнала, поэтому я просто попытался сравнить выходные данные time () и microtime () с помощью простого скрипта (usleep здесь только для того, чтобы ограничить вывод данных):
<?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);
}
?>
Теперь, поскольку $ microtime объявлен до $ time, я ожидаю, что он будет меньше, и ничего не должно быть выведено; однако это, очевидно, не тот случай, и время от времени $ time меньше секунд, возвращаемых функцией microtime (), как в этом примере (усеченном):
1344536674 : 0.15545100 1344536675
1344536675 : 0.15553900 1344536676
1344536676 : 0.15961000 1344536677
1344536677 : 0.16758900 1344536678
Теперь, это всего лишь небольшой пробел; тем не менее, я наблюдал ряд серий, в которых разница (вполне) больше, чем на секунду ... так как это возможно?