【问题标题】:Test network speed using PHP/Javascript使用 PHP/Javascript 测试网络速度
【发布时间】:2011-10-14 14:51:41
【问题描述】:

我正在尝试寻找一种使用 PHP 或 Javascript 测试网络速度的方法。

这可能吗?

理想情况下,我想测试速度并动态决定向客户提供多少内容...

我应该指出,我主要是在谈论移动设备。大多数宽带连接几乎没有什么不同,所以我的目标是衡量某人是否连接到 WiFi 网络或在蜂窝数据网络上苦苦挣扎。

【问题讨论】:

  • 也许能够使用对 PHP 文件的 JS 调用和返回来测试延迟(根据有效负载对响应时间进行基准测试),但我无法想象这是准确的。
  • @Brad Christie,也许不是,但还是很高兴
  • 取决于您要交付的内容,我认为这不是理想的方法。也许如果您正在为移动浏览器开发,这将是可行的,这样您就不会向以低于拨号速度提供服务的移动网络提供图像。
  • 这正是我打算做的:)
  • 3G、2G、宽带、蜂窝......

标签: javascript php networking 3g cellular-network


【解决方案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/电话/手机。
猜你喜欢
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多