我们可以使用 $_SERVER['REQUEST_TIME_FLOAT'] 来获得可靠的处理时间吗?

J. *_*Doe 5 php execution-time time-measurement

我看到每个人都建议使用一个变量,例如

$start_time = microtime(TRUE);
Run Code Online (Sandbox Code Playgroud)

在脚本的顶部,然后在最后一行我们做:

$process_time = microtime(TRUE) - $start_time;
Run Code Online (Sandbox Code Playgroud)

我的问题是,我们能否可靠地使用$_SERVER['REQUEST_TIME_FLOAT']和跳过 $start_time ?如果是这样,为什么每个人仍然建议在顶部使用 $start_time ?

我的意思的例子:

<?php
// No need for $start_time...

// All the stuff we do to have the benchmark at the end

// Only this line needed to display execution time
echo "Processed in: ". bcsub(microtime(TRUE), "{$_SERVER['REQUEST_TIME_FLOAT']}", 4);
?>
Run Code Online (Sandbox Code Playgroud)

ric*_*aan 8

这取决于您要测量的内容。

$_SERVER['REQUEST_TIME_FLOAT']在您的网络服务器将处理交给 PHP的那一刻设置。这意味着它将始终是 PHP 开始处理请求的时间戳。因此,如果您想测量 PHP 到达特定点所需的时间,您可以使用它。缺点是在 PHP 进入您的代码之前,您并不真正知道它在做什么。PHPauto-prepend配置中的某些文件可能会在它读取代码的第一行之前占用处理时间。但是,如果您实际上也测量该时间,必须使用此属性。

另一方面,您可以随时询问microtime(true),这在您想要衡量特定代码段的性能时很有帮助。例如,也许您在 MVC 框架中,您只想测量模型获取和准备数据库结果集所需的时间,而实际上并不关心框架确定哪个控制器/操作所需的时间需要被调用或您的控制器向您的模型询问信息需要多长时间。