我在不同地理位置的2台服务器上上传了同一个文件,现在,我想用PHP计算下载它们所需的时间。它有什么解决方案吗? 例如,我需要这样的东西:
您的下载时间约为30秒。从服务器#1开始,从服务器#2开始50秒。
答案 0 :(得分:2)
您实际上是在尝试通过您正在做的事情来编写内容分发网络(CSN)。
CDN本质上非常复杂,并使用多种策略来确定传递数据的最短路径。
实现这种方式的简单服务器端方法可能是使用IP地址对用户进行地理定位,以便您确定用户所在的国家/地区或城市。然后,您可以将用户重定向到最靠近其位置的服务器。
如果您想从多个服务器计算时间,可以通过使用客户端从两台服务器下载一个小文件并使用传输时间来计算带宽来实现此目的。
使用AJAX计算时间
我假设您正在使用jquery,但您可以使用prototypeJS等轻松完成此操作。
var date = new Date();
var startTime = date.getMilliseconds();
//Known file size in KB
var fileSize = 100;
$.ajax({
url: "http://www.example.com"
}).done(function() {
alert(calculateBandwidth());
});
function calculateBandwidth(){
var date = new Date();
var end = date.getMilliseconds();
var secondsTaken = (end - start)/1000;
var KBps = fileSize/secondsTaken;
return KBps;
}
请注意,这是每秒千字节数。 Kilobits将是(filesize * 8)/ secondsTaken
答案 1 :(得分:0)
您可以使用Timer类来获取一些基准数据,然后根据deceze,您可以预测客户端的下载速度