在 PHP 中查找服务器响应时间


Find server response time in PHP

我使用以下代码来查找服务器响应时间。

<?php
// check responsetime for a webbserver
function pingDomain($domain){
    $starttime = microtime(true);
    // supress error messages with @
    $file      = @fsockopen($domain, 80, $errno, $errstr, 10);
    $stoptime  = microtime(true);
    $status    = 0;
    if (!$file){
        $status = -1;  // Site is down
    }
    else{
        fclose($file);
        $status = ($stoptime - $starttime) * 1000;
        $status = floor($status);
    }
    return $status;
}
?>

我使用此代码测试了一些网站,它返回服务器响应时间约为 40 到 120 毫秒。但是当我打开这些网站时,我需要大约 2-4 秒才能获得第一个字节。

https://developers.google.com/speed/pagespeed/insights/计算的服务器响应时间也几乎是2-4秒。那么这段代码有什么问题呢?

您不向服务器发出 HTTP 请求,但打开一个套接字。您在这里测量的不是服务器响应时间,而是连接时间。

您可以尝试加载页面以获取总连接、响应和数据传输时间,例如:

file_get_contents("http://$domain/")

要仅检索标头:

get_headers("http://$domain/")

或者你可以使用 curl 进行更多的控制。