来自客户端浏览器的 Ping(延迟)请求,而不是来自虚拟主机



我想知道如何更改代码,以便需求不是来自虚拟主机,而是来自客户端浏览器,在这种情况下,显示相应的客户端浏览器对特定网站/服务器有多少"ms">

<?
function ping($host, $port, $timeout) { 
$tB = microtime(true); 
$fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
if (!$fP) { return "Server is down"; } 
$tA = microtime(true); 
return round((($tA - $tB) * 1000), 0)." ms"; 
}
//Echoing it will display the ping if the host is up, if not it'll say "down".
echo ping("google.com", 80, 10); 
?>

这在技术上是不可能的。特别是,由于你想使用 PHP - 你不能让任何 PHP 代码在客户端执行。

测量客户端延迟的唯一方法是通过JavaScript,由于同源策略,您在那里非常有限。您需要在要测量延迟的服务器上有一个延迟测量 JavaScript(我在这里不说真正的"ping",因为出于安全原因,发送原始数据包也是不可能的(,以及同一主机上的 WebSocket 服务器。然后,您可以通过来自此服务器的 JS 建立 WebSocket 连接,并评估建立 WebSocket 连接的延迟。

这与真正的 ping 或 TCP 握手相去甚远 - 您的示例也不是真正的 ICMP,所以也不是真正的 ping。另外,您无法通过WebSocket或AJAX请求从JavaScript连接到您选择的任何主机。所以,你想要实现的是不可能的。

相关内容

  • 没有找到相关文章

最新更新