我写了下面的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 主机)上运行 php -f myscript.php
时,我得到的输出不是接近 1000,而是 35,43,76,543,44,39,29,38...我能做什么?
编辑:我还尝试使用usleep()
和clock_gettime()
来代替time_nanosleep(0,1000000)
和C代码,结果相同。
这可能是 PHP 中的
开销,也可能是 PHP 中的microtime()
和usleep()
不是那么准确。 看看 C 中的类似代码做了什么会很有趣。
本文对准确计时进行了有趣的讨论。
VMWare 撰写的这篇关于虚拟机中计时的文章可能会引起人们的兴趣。