有没有办法从HTTP服务器获取有关HTTP请求持续时间的可靠信息?
感兴趣的场景:
使用POST方法调度带有数据有效负载的AJAX请求,目标是PHP脚本:
//dispatch ajax request
$.ajax({
type: "POST",
url: "timing.php",
data: {
"payload":"some long string or something",
"currentTime": +new Date() //miliseconds on client
},
success: function(response) { console.log(response) },
error: function() { console.log('something went banana...') },
dataType: "text"
});
PHP脚本“timing.php”可能会说:
<?php
//in the meanwhile, on a quiet server...
$currentTime = microtime(true); //microseconds on server
//send headers as necessary, and then, the payload
echo $currentTime * 1000 - $_POST["currentTime"];
?>
我想知道的是从请求到达http服务器到服务器调用PHP脚本之间的时间。处理(加载)POST请求的输入参数需要多长时间。不是从Javascript currentTime到PHP $ currentTime所花费的时间,而是一个Apache用来从AJAX请求加载“payload”(和“currentTime”)。 应该在服务器端收集时间。
下落:
答案 0 :(得分:0)
事实证明,最好用PHP环境获得一些可靠的信息是$ _SERVER ['REQUEST_TIME_FLOAT']变量,自PHP 5.4.0起可用。这将忽略启动实际模块(HTTP服务器)所需的一些时间,但应该相当准确。所需的时间是:
select t.* from
tbl t
left join tbl tp on t.id-1=tp.id and t.name=tp.name
left join tbl tn on t.id+1=tn.id and t.name=tn.name
where t.utilization_rate < 50 and
(
ISNULL(tp.utilization_rate,0) < 50 or ISNULL(tn.utilization_rate,0) < 50
)
或者,如果将%D添加到mod_log_config模块的日志条目中,Apache2也可以这样做:
$time_microseconds = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];.