PHP 已用时间?

Elapsed Time in PHP?

我看过几个关于这个主题的问题,所有问题的基本答案都相同。使用microtime()记录起止时间,然后相减。大多数情况下这是有效的,除非事件跨越秒数增加的点。届时结束时间可能会小于开始时间。

你能用一个函数给 microtime() 加上秒来得到秒 + microtime 吗?

示例:

function getSMtime() {
    return time() + (microtime() / 1000000);
}

$start = getSMtime();
... some code to be timed ...
$end = getSMtime();
echo "Time elapsed: " . ($end - $start) . " seconds.";

您应该提供参数 true 以获得浮点数,而不是字符串:

 microtime(true)

来自documentation

By default, microtime() returns a string in the form "msec sec", where sec is the number of seconds since the Unix epoch (0:00:00 January 1,1970 GMT), and msec measures microseconds that have elapsed since sec and is also expressed in seconds.

If get_as_float is set to TRUE, then microtime() returns a float, which represents the current time in seconds since the Unix epoch accurate to the nearest microsecond.

因此,如果您不提供此参数,return 值将是一个字符串,如:

0.65538700 1481746900

...其中第一部分始终是 0 和 1 之间的值。如果像您一样将该结果字符串除以 1000000,则会发生对数字的隐式转换,从而忽略字符串的第二部分.所以实际上,你只能用时间戳的微秒 part 来计算。

结论:使用true参数。