【发布时间】:2011-07-28 15:04:30
【问题描述】:
如何创建一个 PHP 页面来检测用户的互联网速度并将其显示在页面上?类似的,
你的网速是??? Kbps
【问题讨论】:
-
php 脚本在服务器中执行,猜想这不会决定用户的网速……而 flash 或 java 会这样做。
标签: php performance
如何创建一个 PHP 页面来检测用户的互联网速度并将其显示在页面上?类似的,
你的网速是??? Kbps
【问题讨论】:
标签: php performance
这可能不完全是您正在寻找的(阅读粗体部分),但我怀疑是否还有其他可能。
此脚本向您的客户端发送 512 KB 的 HTML cmets。解析 HTML 可能会增加总传输时间,因此不要将此作为原始下载速度。
引用自:PHP Speed test
来源在这里:
http://jan.moesen.nu/code/php/speedtest/index.php?source=1
希望对您有所帮助。
【讨论】:
<?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";
?>
【讨论】:
例如通过在客户端计时 AJAX 请求。这样你就可以计算出大概的下载速度,但不能上传。对于上传,发送大的 AJAX POST 请求即可处理。
使用 jQuery 和 $.ajax 非常简单。
【讨论】:
通过用户将文件上传到您的服务器。然后将文件大小(以 kb 为单位)除以以秒为单位的时间。然后你会得到 kb/s(上传速度)。
$kb = round(filesize("file.jpg") / 1024); // 500kb
$time = time() - $start; // 5s
$speed = round($kb / $time); // 100kb/s
【讨论】:
$start 是什么?
这对我有用:
$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";
?>
我是从 here 那里得到的。
【讨论】:
真的不可能。 PHP是服务器端的,检测速度将是客户端的。
您可能会找到解决方法来做到这一点。
【讨论】: