猿问

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

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


$start_time = microtime(TRUE);

在脚本之上,然后在最后一行,我们执行以下操作:


$process_time = microtime(TRUE) - $start_time;

我的问题是,我们可以可靠地$_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);

?>


慕神8447489
浏览 196回答 1
1回答

至尊宝的传说

这取决于您要测量的内容。$_SERVER['REQUEST_TIME_FLOAT']在您的网络服务器将处理移交给PHP的那一刻设置。这意味着它将始终是PHP开始处理请求的时间戳。因此,如果您要测量PHP到达特定点所花费的时间,则可以使用它。不利之处在于,在进入代码之前,您实际上并不知道PHP在做什么。PHP的auto-prepend配置中可能有一些文件甚至在读取代码的第一行之前都需要花费一定的处理时间。但是,如果您实际上也想测量该时间,则必须使用此属性。另一方面,您可以microtime(true)随时随地询问,这在您想要衡量特定代码段的性能时会有所帮助。例如,也许您在MVC框架中,而您只想测量模型获取和准备数据库结果集所花费的时间,而您实际上并不关心框架找出哪个控制器/操作所花费的时间。需要调用,或者控制器需要多长时间向模型询问信息。
随时随地看视频慕课网APP
我要回答