如何在PHP中检测internet速度?

如何在PHP中检测internet速度?,php,performance,Php,Performance,如何创建一个PHP页面来检测用户的网速并在页面上显示?大概 你的网速是???Kbps 通过用户将文件上载到服务器。然后将文件大小除以kb,时间以秒为单位。然后得到kb/s(上传速度) 不太可能。PHP是服务器端的,检测速度将是客户端的 不过,你可能会找到解决办法。这可能不是你想要的(请阅读粗体部分),但我怀疑是否还有其他可能 此脚本向客户端发送512 KB的HTML注释。解析HTML可能会增加总传输时间,因此不要将此作为原始下载速度。 引自: 资料来源如下: 希望对您有所帮助。例如,在客户端定

如何创建一个PHP页面来检测用户的网速并在页面上显示?大概

你的网速是???Kbps


通过用户将文件上载到服务器。然后将文件大小除以kb,时间以秒为单位。然后得到kb/s(上传速度)


不太可能。PHP是服务器端的,检测速度将是客户端的


不过,你可能会找到解决办法。

这可能不是你想要的(请阅读粗体部分),但我怀疑是否还有其他可能

此脚本向客户端发送512 KB的HTML注释。解析HTML可能会增加总传输时间,因此不要将此作为原始下载速度。

引自:

资料来源如下:


希望对您有所帮助。

例如,在客户端定时AJAX请求。这样你可以计算出大概的下载速度,但不能计算上传速度。对于上传,发送大型AJAX POST请求可以处理它

使用jQuery和
$.ajax
做起来非常简单。


<?php
$kb=1024;
echo "streaming $kb Kb...<!-";
flush();
$time = explode(" ",microtime());
$start = $time[0] + $time[1];
for($x=0;$x<$kb;$x++){
    echo str_pad('', 1024, '.');
    flush();
}
$time = explode(" ",microtime());
$finish = $time[0] + $time[1];
$deltat = $finish - $start;
echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."Kb/s";
?>
这对我很有用:

    $kb=512;
    echo "streaming $kb Kb...<!-";
    flush();
    $time = explode(" ",microtime());
    $start = $time[0] + $time[1];
    for($x=0;$x<$kb;$x++){
        echo str_pad('', 1024, '.');
        flush();
    }
    $time = explode(" ",microtime());
    $finish = $time[0] + $time[1];
    $deltat = $finish - $start;
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."Kb/s";
    ?>
$kb=512;
echo“流式传输$kb…测试在$deltat秒内完成。您的速度为”。四舍五入($kb/$deltat,3)。“kb/s”;
?>

这是我从中得到的。

php脚本是在服务器中执行的,估计这不会决定用户的上网速度。。。而flash或java可以做到这一点。你只需要考虑Comcast的Powerboost之类的东西。我想如果你提供一个代码示例,你会有更多的投票权。但是,什么是
$start
?不要点击triquitips演示URL,该站点提供了一个脚本演示,它似乎试图向您自动订阅某些内容。@退出-我从帖子中删除了链接。(我不确定这是不是恶意的,我不想知道!)
    $kb=512;
    echo "streaming $kb Kb...<!-";
    flush();
    $time = explode(" ",microtime());
    $start = $time[0] + $time[1];
    for($x=0;$x<$kb;$x++){
        echo str_pad('', 1024, '.');
        flush();
    }
    $time = explode(" ",microtime());
    $finish = $time[0] + $time[1];
    $deltat = $finish - $start;
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."Kb/s";
    ?>