php+网络测速,网络测速步骤

本文详述了使用PHP进行网络测速的过程,包括解析XML获取服务器列表、计算距离选择最近的5个服务器、获取网络延迟、测试下载速度以及上传速度的方法。通过模拟测试,演示了如何获取服务器地址、计算延迟、监测下载和上传进度,为网络性能评估提供了一套方案。
摘要由CSDN通过智能技术生成

需求:

在数据中获取 5 个离当前位置最近的服务器作为目标服务器进行网络测速。以测试图片下载速度的形式对下行网速进行模拟测速,以上传一个随机 1M文件速度对上行速度进行模拟测速;共计 25 秒。该篇文章以测试一个服务器为例模拟网络测速过程。

一、解析 XML 格式 数据

解析数据获取服务器列表:

解析网址数据,并获取 标签下的 server 列表(即获取所有的服务器)。

每一条 数据中包含url(服务器地址)、lat(纬度)、lon(经度)、name(名字)、sponsor(主办者)、id(id 标识)

0b6c4c9ce614

serversList.png图片网址:

计算当前位置与服务器的距离并选出距离最近的 5 个服务器:

获取每一个服务器的经度(lon)和纬度(lat),并通过SpeedTestTool类中的方法- (void)speedCalculateDistanceWithViewController:(UIViewController *)viewController longitude:(double)longitude latitude:(double)latitude distanceBlock:(DistanceBlock)distanceBlock;计算出该服务器与当前位置的距离,找出离当前位置最近的 5 个服务器分别为 s1、s2、s3、s4、s5。

0b6c4c9ce614

serverData.png图片网址:

获取地理位置代码示例如下:

[self.speedTool speedCalculateDistanceWithViewController:self longitude:116.3917 latitude:39.9139 distanceBlock:^(double distance, CLLocation * _Nonnull currentLocation) {

NSLog(@"%f,%f,%f",currentLocation.coordinate.longitude,currentLocation.coordinate.latitude,distance);

}];

二、获取网络延迟

获取主机地址:

使用SpeedTestTool类中- (NSString *)speedCutOutUrlString:(NSString *)urlString;方法获取 s1、s2、s3、s4、s5 这5 个服务器url标签中的主机地址。

例:url "http://www2.unicomtest.com:80/speedtest/upload.php"调用这个方法后获取的主机地址就为www2.unicomtest.com。

获取主机地址示例代码如下:

NSString *strUrl = @"http://nmgspeedtest1.ffcs.cn:80/speedtest/upload.jsp";

NSString *mainframe = [self.speedTool speedCutOutUrlString:strUrl];

获取 s1、s2、s3、s4、s5 这5 个服务器的平均网络延迟:

通过STDPingServices类中

+ (STDPingServices *)startPingAddress:(NSString *)address callbackHandler:(void(^)(STDPingItem *item, NSArray *pingItems))handler;方法获取 s1、s2、s3、s4、s5 这5 个服务器的网络延迟。每一个服务器获取 5 次网络延迟,计算这个服务器的平均网络延迟,依照这样的方法计算剩下 4 个服务器的平均网络延迟,最后取得 5 个服务器的平均网络延迟最为最终的网络延迟。

获取网络延迟代码示例如下:

//获取网络延迟

self.pingServices = [STDPingServices startPingAddress:@"www2.unicomtest.com" callbackHandler:^(STDPingItem *pingItem,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值