(PHP 5 を使用して) microtime() を使用していくつかのデータをログに記録しているときに、ログ ファイルのタイムスタンプに関してわずかに位相がずれているように見えるいくつかの値に遭遇したので、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
さて、これはほんの小さなギャップです。ただし、違いが(かなり)1秒以上あるシリーズをいくつか観察しました...では、これはどのように可能ですか?