如何使用php获得下载速度

如何使用php获得下载速度,php,download,connection,performance,Php,Download,Connection,Performance,我需要获得访问我的网站的用户的下载速度,是否可以使用PHP? 如果是,怎么做 请给我一些建议 提前感谢。我不确定如何在PHP中实现这一点(在错误的一端运行,在服务器上而不是客户端),但我想您可以了解使用AJAX的下载速度 在页面加载过程中,您可能会在某个固定点异步回调某个JavaScript片段到您的网站,以便了解客户端接收页面到该点所需的时间 或者,您可以让一些JavaScript执行从您的站点下载的文件,并计算下载时间,返回下载完成的时间。这种方式可能是更可靠的指示,因为回调不属于下载时间计

我需要获得访问我的网站的用户的下载速度,是否可以使用PHP? 如果是,怎么做

请给我一些建议


提前感谢。

我不确定如何在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
在本例中,本地主机连接的速度大约是本地主机连接的40倍,但我知道速度要快得多——因此,与远程主机通信时,与本地主机通信的性能可能会明显降低


希望这有助于解释。

不确定如何在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
在本例中,本地主机连接的速度大约是本地主机连接的40倍,但我知道速度要快得多——因此,与远程主机通信时,与本地主机通信的性能可能会明显降低


希望这有助于解释。

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


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

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


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

你可以要求你的用户运行许多可用带宽测试中的一个,如。

你可以要求你的用户运行许多可用带宽测试中的一个,如。

我使用CURL尝试了类似的方法,它在我的本地服务器上运行得非常好。但是,在服务器上运行时,它显示出很大的价值。我需要向用户展示他们的下载速度,无论是在本地服务器还是在线服务器上,下载速度都应该相同。知道吗?你说的大值是什么意思?花了多少时间?多大?如果您在本地主机上执行HTTP请求,那么当您在远程主机上执行相同的请求时,您的时间可能要长数千倍,因为您实际上是通过网络传输的。我使用CURL尝试了类似的方法,它在我的本地服务器上运行得非常好。但是,在服务器上运行时,它显示出很大的价值。我需要向用户展示他们的下载速度,无论是在本地服务器还是在线服务器上,下载速度都应该相同。知道吗?你说的大值是什么意思?花了多少时间?多大?如果您在本地主机上执行HTTP请求,那么当您在远程主机上执行相同的请求时,您的时间可能要长数千倍,因为您实际上是通过网络传输的。这是原始问题的一部分。我想嵌入速度测试。speedtest.net由ookla提供动力。如果我把它嵌入我的网站,他们的许可证是有限制的,我只能把它放在一个页面上。我想把它写在几页上。这是原始问题的一部分。我想嵌入速度测试。speedtest.net由ookla提供动力。如果我把它嵌入我的网站,他们的许可证是有限制的,我只能把它放在一个页面上。我想把它放在几个页面上。我不是在浪费带宽,因为只有当用户点击“开始测试”时,测试才会开始。我想要的只是一个速度测试,我可以嵌入到我的网站上。我不会浪费带宽,因为测试只有在用户点击“开始测试”时才会开始。我想要的只是一个速度测试,我可以嵌入到我的网站上。