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)
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
参数。
我看过几个关于这个主题的问题,所有问题的基本答案都相同。使用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)
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 toTRUE
, thenmicrotime()
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
参数。