1

我写了以下 myscript.php:

<?php
$count=0;
$start=microtime(true);
while ((microtime(true)-$start)<1) {
        usleep(1000);
        $count++;
}
echo $count;
?>

当我在我的 CentOS 2.6.32 x64 内核(Windows 7 主机)上运行时,我得到的输出不是接近 1000,而是php -f myscript.php35、43、76、543、44、39、29、38……我该怎么办?

编辑:我也尝试使用and而不是time_nanosleep(0,1000000)C 代码,结果相同。usleep()clock_gettime()

4

1 回答 1

1

它可能是 PHP 中的开销,或者可能是 PHP 中microtime()的开销usleep()不是那么准确。看看 C 中类似的代码做了什么会很有趣。

这篇文章有一个关于准确计时的有趣讨论。

VMWare 的这篇关于虚拟机计时的文章可能会很有趣。

于 2013-09-09T03:36:23.887 回答