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

时间:2019-04-28 00:00:56

标签: php execution-time time-measurement

我看到每个人都建议使用诸如

这样的变量
fish = dict((i, {"weight": weight[i], "visual": visual[i], "step": step[i]}) for i in range(len_fish))

在脚本顶部,然后在最后一行:

$start_time = microtime(TRUE);

我的问题是,我们可以可靠地使用$process_time = microtime(TRUE) - $start_time; 并完全跳过$ start_time吗?如果是这样,为什么每个人仍然建议在顶部使用$ start_time?

我的意思示例:

$_SERVER['REQUEST_TIME_FLOAT']

1 个答案:

答案 0 :(得分:3)

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

$_SERVER['REQUEST_TIME_FLOAT']在您的Web服务器hands the processing over使用PHP时设置。这意味着它将始终是PHP开始处理请求的时间戳。因此,如果要测量PHP到达特定点所花的时间,可以使用它。不利之处在于,在进入代码之前,您实际上并不知道PHP在做什么。 PHP的auto-prepend配置中可能有一些文件甚至在读取代码的第一行之前都需要花费一定的处理时间。但是,如果您实际上也想测量该时间,那么您就可以使用该属性。

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