所以我像这样测量执行时间:
$time = -microtime(true);
...
$time += microtime(true);PHP版本是运行在Win Server2008 x64机器上的5.3.26RC1 x86。"Precision“ini参数等于16。但是,每次执行时间低于0.001,它只返回0(显然,脚本不能立即执行!)。更奇怪的是,我的测试机器(标准php.ini-development)返回非零值,即使这两个语句之间没有代码...会出什么问题呢?
更新:简单测试:
<?php
ini_set('precision',16);
echo php_uname() . PHP_EOL;
echo phpversion() . PHP_EOL;
echo ini_get('precision').PHP_EOL;
$time = -microtime(true);
$time += microtime(true);
echo number_format($time, 10) .PHP_EOL;
?>测试机输出:
Windows NT XXX 6.1 build 7601 (Windows 7 Ultimate Edition Service Pack 1) i586
5.4.12
16
0.0000028610生产机器输出:
Windows NT XXX 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
5.3.26RC1
16
0.0000000000发布于 2013-06-28 14:31:26
你的平台,Windows,不能区分这么小的时间,用标准的时间调用。
PHP源代码中的注释:
在windows上,time_sleep_until的精度为毫秒,而microtime()的精度为十分之一秒。
(在ext/standard/tests/misc/time_sleep_until_basic.phpt中。)
https://stackoverflow.com/questions/17358511
复制相似问题