【问题标题】:How to get the download speed using php如何使用php获取下载速度
【发布时间】:2010-01-01 12:09:57
【问题描述】:

我需要获取访问我网站的用户的下载速度,PHP 可以吗? 如果是这样,该怎么做?

请指教..

提前致谢。

【问题讨论】:

    标签: php download connection performance


    【解决方案1】:

    只有一种好方法,那就是询问用户。尽量给有意义的名字,这样你就不会把电脑文盲弄得太糊涂了。

    唯一的另一种选择是向用户发送一些相当大的东西以及发送需要多长时间的时间,但是浪费其他人的带宽是不礼貌的,特别是如果你最终阻塞了他们与某人共享的连接。

    【讨论】:

    • 我没有浪费带宽,因为只有当用户点击“开始测试”时测试才会开始。我想要的只是一个可以嵌入到我的网站的速度测试。
    【解决方案2】:

    您可以要求您的用户运行许多可用的带宽测试之一,例如 this one

    【讨论】:

    • 这是原始问题的一部分。我想嵌入速度测试。 speedtest.net 由 ookla 提供支持。如果我将它嵌入我的网站,他们的许可是有限制的,我只能将它放在一页上。我想把它放在几页上。
    【解决方案3】:

    不确定您将如何在 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 倍,但我知道它要快得多 - 所以你会期望与远程主机通信的性能比本地主机慢得多。

    希望有助于解释。

    【讨论】:

    • 我使用 CURL 尝试了类似的方法,它在我的本地服务器上运行完美。但是,它在服务器中运行时显示出很大的价值。我需要向用户展示他们的下载速度,并且在本地或实时的任何服务器中都应该是相同的。有什么想法吗?
    • 大值是什么意思?花的时间?多大?如果您在 localhost 上执行 HTTP 请求,那么当您从远程主机执行相同请求时,您可以预期时间可能会大数千倍,因为您实际上是通过网络传输的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2014-05-22
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2015-06-07
    • 2017-02-28
    相关资源
    最近更新 更多