关于Windows microtime()行为的PHP 5.5

时间:2013-09-19 08:02:42

标签: php windows xampp microtime kohana-3.3

我正在尝试使用Profiler来描述我的Kohana项目。我在Windows上使用php 5.5.3在XAMPP上。在这个版本的PHP上,主要请求,0.000000 sec.或数据库调用的执行时间为find_file()。与PHP 5.4.19相同的行为。

如果我使用PHP 5.3将项目移动到XAMPP,一切都按预期工作 - 单个数据库查询需要0.00012-0.00014 sec.左右等。 我怀疑自5.3版以来microtime(true)函数发生了一些变化。如果我用简单的时间计算用10000次迭代测量rand(0, 9999)

$time_start = microtime(true);
for($i=0; $i<10000; $i++) {
    rand(0, 9999);
}
$time_end = microtime(true);
$time = $time_end - $time_start;

我在函数调用之前和之后仍然获得相同的时间,因此执行时间等于0,这当然是不可能的。

有没有办法在Windows上修复PHP 5.4或5.5上的这种行为以获得更精确的计时? 谢谢!

1 个答案:

答案 0 :(得分:1)

查看php源代码

if(6 == EG(windows_version_info).dwMajorVersion && 2 >= EG(windows_version_info).dwMinorVersion) {
        GetSystemTimePreciseAsFileTime(&ft); /* highest possible resolution <1us */
    } else {
        GetSystemTimeAsFileTime(&ft);   /* 100ns blocks since 01-Jan-1641 */
    }
似乎Windows 8具有更精确的计时功能,这就是为什么它在该版本上不可重复的原因。

我可以使用http://windowstimestamp.com中的校准工具解决此问题。

谢谢大家的答案!