使用 PHP/Javascript 测试网络速度
Posted
技术标签:
【中文标题】使用 PHP/Javascript 测试网络速度【英文标题】:Test network speed using PHP/Javascript 【发布时间】:2011-10-14 14:51:41 【问题描述】:我正在尝试寻找一种使用 php 或 javascript 测试网络速度的方法。
这可能吗?
理想情况下,我想测试速度并动态决定向客户提供多少内容...
我应该指出,我主要是在谈论移动设备。大多数宽带连接几乎没有什么不同,所以我的目标是衡量某人是否连接到 WiFi 网络或在蜂窝数据网络上苦苦挣扎。
【问题讨论】:
也许能够使用对 PHP 文件的 JS 调用和返回来测试延迟(根据有效负载对响应时间进行基准测试),但我无法想象这是准确的。 @Brad Christie,也许不是,但还是很高兴 取决于您要交付的内容,我认为这不是理想的方法。也许如果您正在为移动浏览器开发,这将是可行的,这样您就不会向以低于拨号速度提供服务的移动网络提供图像。 这正是我打算做的:) 3G、2G、宽带、蜂窝...... 【参考方案1】:执行 ajax 请求以下载固定大小的数据块并检查之前/之后的时间以大致了解速度:
var start = new Date();
$.ajax(....);
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds.
您需要使用足够大的数据块来获取有效请求,这意味着您只是为了进行此测试而浪费了相当多的带宽。
【讨论】:
嗯,这些是我的恐惧。无论如何都是好主意 @genesis:应该,只要您的基准变量在响应范围之外。我可能会添加一个error:
/setTimeout
默认值,以防 ajax 失败。
@BradChristie:你没明白。 javascript 直接进行,直到 $.ajax() 完成...
@genesis:我将其解释为 ajax 调用中的结尾,但这可能只是将我的理解置于 Marc 的代码之上。你是对的,因为写它会失败。但是稍微有点逻辑,这是可行的。 ;-)
@genesis:ajax 通常是异步完成的,但这只会改变你在哪里/何时进行“结束”时间收集。如果需要,您也可以随时发出同步请求。【参考方案2】:
按照我的看法,您可以使用 JS -> PHP -> JS 调用和计时响应,但这是非常不准确的。此外,由于浏览器之间存在/不存在服务器标头,您需要使用大量数据(过多的带宽使用问题)并且永远不会得到明确的答案。服务提供商(cough comcast cough)也有一个问题,他们在前几秒给你 12 mbit 的速度,但之后让你窒息到 3 mbit,所以现在你的“测试”会说它们在 OC 线上,但流本身现在会出现数据不足并不断缓冲。
最好的解决方案是在流式传输协议中构建逻辑,该逻辑可以根据传入的数据量/少量数据进行调整。也许它从低带宽质量开始,并在注意到缓冲区增长时提高标准比数据播放速度更快(这就是 Hulu、YouTube 或亚马逊视频所做的)。
【讨论】:
大多数有线运营商现在都启用了突发,因此他们可以声称“我们正在以千兆位速率 (*) [英里后] 向您发送皮秒期间的数据”。 @MarcB:是的,在我的 wonderful xfinity 服务上签了合同(我绝对喜欢)。 等不及我的电信公司 (Sasktel) 完成其 FTTH 建设,然后我可以放弃电缆。 200mbit 起始速度,以及所有捆绑在机上的 IPtv/电话/手机。以上是关于使用 PHP/Javascript 测试网络速度的主要内容,如果未能解决你的问题,请参考以下文章