【发布时间】:2010-01-01 12:09:57
【问题描述】:
我需要获取访问我网站的用户的下载速度,PHP 可以吗? 如果是这样,该怎么做?
请指教..
提前致谢。
【问题讨论】:
标签: php download connection performance
我需要获取访问我网站的用户的下载速度,PHP 可以吗? 如果是这样,该怎么做?
请指教..
提前致谢。
【问题讨论】:
标签: php download connection performance
只有一种好方法,那就是询问用户。尽量给有意义的名字,这样你就不会把电脑文盲弄得太糊涂了。
唯一的另一种选择是向用户发送一些相当大的东西以及发送需要多长时间的时间,但是浪费其他人的带宽是不礼貌的,特别是如果你最终阻塞了他们与某人共享的连接。
【讨论】:
您可以要求您的用户运行许多可用的带宽测试之一,例如 this one。
【讨论】:
不确定您将如何在 PHP 中执行此操作(在错误的一端运行,在服务器而不是客户端上),但我想您可以了解使用 AJAX 的下载速度。
您可能在页面加载期间的某个固定时间点有一段 JavaScript 异步回调到您的网站,让您了解客户端到该点接收页面需要多长时间。
或者,您可以让一些 JavaScript 从您的站点执行文件下载并计算下载时间,并在下载完成时回调。这种方式可能是更可靠的指示,因为回调不是下载时间计算的一部分。
更新评论
到本地计算机的网络连接,例如使用“localhost”作为目标地址实际上不会访问网络。
您可以通过简单的 ICMP ping 验证这一点。
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.041 ms
查看时间 - 0.045ms 非常小。
但是,如果您与远程主机通信,即使它非常接近,因为您实际上是在与网络交互,所以一切都会变慢。
PING 192.168.xxx.xxx (192.168.xxx.xxx) 56(84) bytes of data.
64 bytes from 192.168.11.1: icmp_seq=1 ttl=64 time=1.85 ms
64 bytes from 192.168.11.1: icmp_seq=2 ttl=64 time=1.54 ms
在这个例子中,它在 localhost 连接上快了大约 40 倍,但我知道它要快得多 - 所以你会期望与远程主机通信的性能比本地主机慢得多。
希望有助于解释。
【讨论】: