3

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

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

$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 上的这种行为以获得更精确的计时?谢谢!

4

1 回答 1

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的校准工具来解决这个问题。

谢谢大家的回答!

于 2013-09-19T17:01:53.983 回答