如何检查我的服务器的上传和下载速度?

时间:2012-07-01 16:37:16

标签: php performance download monitor

我买了一台服务器,我需要检查它的互联网连接(速度)。

有一种简单的方法吗?

我用谷歌搜索但我找不到任何东西......

我这样做了:

<?php

$link = 'http://speed.bezeqint.net/big.zip';
$start = time();
$size = filesize($link);
$file = file_get_contents($link);
$end = time();

$time = $end - $start;

$speed = $size / $time;

echo "Server's speed is: $speed MB/s";


?>

这是对的吗?

4 个答案:

答案 0 :(得分:8)

尝试:

<?php

$link = 'http://speed.bezeqint.net/big.zip';
$start = time();
$size = filesize($link);
$file = file_get_contents($link);
$end = time();

$time = $end - $start;

$size = $size / 1048576;

$speed = $size / $time;

echo "Server's speed is: $speed MB/s";


?>

答案 1 :(得分:5)

如果您有远程桌面,请安装网络浏览器并转到speedtest.net并测试速度。

如果没有,以下是测试服务器下载速度的方法:

  • 以root身份登录
  • 输入wget http://cachefly.cachefly.net/100mb.test
  • 你会看到类似100%[======================================>] 104,857,600 10.7M/s的内容 - 10.7M / s是下载速度。

如果您有多台服务器,则可以通过在两台服务器之间传输文件来测试上传速度。

答案 2 :(得分:2)

让它连接到您知道快速运行的服务器(例如Google)。然后,测量从发送第一个数据包到接收第一个数据包所需的时间 - 这就是您的上传时间。从接收第一个数据包到最后一个数据包的时间是下载时间。然后除以传输的数据量,结果就是你的结果。

示例:

$times = Array(microtime(true));
$f = fsockopen("google.com",80);
$times[] = microtime(true);
$data = "POST / HTTP/1.0\r\n"
       ."Host: google.com\r\n"
       ."\r\n"
       .str_repeat("a",1000000); // send one megabyte of data
$sent = strlen($data);
fputs($f,$data);
$firstpacket = true;
$return = 0;
while(!feof($f)) {
    $return += strlen(fgets($f));
    if( $firstpacket) {
        $firstpacket = false;
        $times[] = microtime(true);
    }
}
$times[] = microtime(true);
fclose($f);
echo "RESULTS:\n"
    ."Connection: ".(($times[1]-$times[0])*1000)."ms\n"
    ."Upload: ".number_format($sent)." bytes in ".(($times[2]-$times[1]))."s (".($sent/($times[2]-$times[1])/1024)."kb/s)\n"
    ."Download: ".number_format($return)." bytes in ".(($times[3]-$times[2]))."s (".($return/($times[3]-$times[2])/1024)."kb/s)\n";

(由于缺少Content-Length标题,您将收到来自Google服务器的错误消息)

运行几次,得到一个平均值,但不要运行太多因为我认为Google不会太喜欢它。

答案 3 :(得分:0)

对于下载,您可以创建一个计算平均下载速度的脚本:

$start = time(true);

$fileSize = '10240'; // if the file's size is 10MB

for ($i=0; $i<10; $i++) {
    file_get_contents('the_url_of_a_pretty_big_file');
}

$end = time(true);

$speed = ($fileSize / ($end - $start)) / $i * 8;

echo $speed; // will return the speed in kbps