帮忙观段代码
程序员文章站
2022-06-17 13:06:12
...
帮忙看段代码
书上说这段代码可以计算网络带宽,我试了下发现不行,$start和$stop是相等的。仔细想想,$duration计算的是php引擎解析echo语句的时间,而不是用户接收$data的时间。再想想,如果要计算带宽,必须要计算用户获取html文件的时间,可是那是在php解析完毕之后才进行的,难道用php计算用户带宽是件不可能的事??请高手指正,求教计算用户带宽的实现
------解决方案--------------------
把 $stop = time(); 移到最前边
你的代码检测的是读取文件的速度
继续把
$filename 赋值为远程文件名
filesize($filename) 改为 strlen($data)
你的代码检测的是你服务器的带宽
只用 php 是不能检测用户带宽的
必须有客户端协同,大致如下
客户端发出测试请求(onsubmit),同时记录和发出发生请求的时间
php 收到请求后输出固定大小的内容,并记录客户端发来的时间(据此可计算客户端上行时间)
在客户端的onload事件中,再次向php发出当前时间
php 在扣除上行时间后,得到下行时间
然后.....
- PHP code
$filename = 'test.txt'; $data = file_get_contents($filename); $fsize = filesize($filename) / 1024; $start = time(); echo ""; $stop = time(); $duration = $stop - $start; $speed = round($fsize / $duration, 2); echo "Your network speed: $speed kb/s";
书上说这段代码可以计算网络带宽,我试了下发现不行,$start和$stop是相等的。仔细想想,$duration计算的是php引擎解析echo语句的时间,而不是用户接收$data的时间。再想想,如果要计算带宽,必须要计算用户获取html文件的时间,可是那是在php解析完毕之后才进行的,难道用php计算用户带宽是件不可能的事??请高手指正,求教计算用户带宽的实现
------解决方案--------------------
把 $stop = time(); 移到最前边
你的代码检测的是读取文件的速度
继续把
$filename 赋值为远程文件名
filesize($filename) 改为 strlen($data)
你的代码检测的是你服务器的带宽
只用 php 是不能检测用户带宽的
必须有客户端协同,大致如下
客户端发出测试请求(onsubmit),同时记录和发出发生请求的时间
php 收到请求后输出固定大小的内容,并记录客户端发来的时间(据此可计算客户端上行时间)
在客户端的onload事件中,再次向php发出当前时间
php 在扣除上行时间后,得到下行时间
然后.....
相关文章
相关视频