2012-07-01 13 views
5

Kupiłem serwer i muszę sprawdzić jego połączenie internetowe (prędkość).Jak sprawdzić szybkość wysyłania i pobierania mojego serwera?

Czy istnieje prosty sposób na zrobienie tego?

google ale nie mogłem znaleźć nic ...

Zrobiłem to:

<?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"; 


?> 

Czy jest to prawidłowe?

+0

Prędkość pobierania przychodzi mi do głowy: zainstaluj klienta wiersza poleceń bittorrent i pobierz dystrybucję Linuksa (niezbyt nowa, ale niezbyt stara, tak, że jest dużo nasion). Zwykle wszystkie te nasiona mogą wysyłać tak szybko, jak twój serwer. – Aufziehvogel

+0

Wygląda dobrze dla mnie. Czy to działa? – PeeHaa

Odpowiedz

9

Spróbuj:

<?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"; 


?> 
+0

Zrobiłem to: Czy to prawda? – HtmHell

+0

Prawie wyemituje bajty na sekundę, a nie MB/s – lauriys

5

Jeśli masz zdalny pulpit, a następnie zainstalować przeglądarkę internetową i przejdź do speedtest.net i przetestować szybkość.

Jeśli nie, oto jak można przetestować prędkość pobierania swojego serwera:

  • zalogować się jako użytkownik root
  • typu wget http://cachefly.cachefly.net/100mb.test
  • zobaczysz coś 100%[======================================>] 104,857,600 10.7M/s - 10.7m/s pobieranie prędkość.

Jeśli masz więcej niż jeden serwer, możesz przetestować szybkość przesyłania, przesyłając pliki między 2 serwerami.

0

Do pobrania, można utworzyć skrypt, który będzie obliczyć średnią prędkość pobierania:

$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 
+0

Pierwsza linia. mictotime. Również 100 KB = 102400 B, nie 100000. – lauriys

+0

Mikrotom IMHO byłby lepszy i dokładniejszy. – lauriys

+0

Zauważyłem rzecz 'microtime' kilka sekund po wysłaniu. Dziękuję za wskazanie. Jeśli chodzi o rozmiar pliku, moim zdaniem nie jest to ważne, nie miałoby to większego wpływu na wynik. –

2

mieć go połączyć się z serwerem wiesz, działa szybko (takich jak Google). Następnie zmierz, ile czasu zajmuje wysłanie pierwszego pakietu do otrzymania pierwszego pakietu - to jest twój czas ładowania. Czas od otrzymania pierwszego do ostatniego pakietu to czas pobierania. Następnie podziel według ilości przesłanych danych i uzyskaj wynik.

Przykład:

$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"; 

(otrzymasz komunikat o błędzie z serwerów Google, z uwagi na cel Content-Length brak)

uruchomić go kilka razy, dostać średnio, ale nie uruchom go za dużo, ponieważ nie sądzę, że Google chciałby go za dużo.

+0

Dzięki, ale wyniki, które otrzymuję, nie mają większego sensu ... Kiedy pobieram plik z mojego serwera jest on na poziomie 600kb/si mam połączenie internetowe 100MB/s ... Używając twojego kodu dostałem to : REZULTATY: Połączenie: 75.366973877ms Załaduj: 1000,037 bajtów w 0,192752122879s (5066.60377186kb/s) Pobierz: 1,081 bajtów w 2.69412994385E-5s (39183.8584071kb/s) – HtmHell

+0

Gdy pobierasz plik ze swojego serwera, twoja sieć jest wąskim gardłem . Serwery mają zwykle znacznie lepsze połączenie z Internetem, dlatego test łączy się z innym serwerem. –

+0

Tak, i zwykle pobieram z prędkością 12 MB/s (z torrenta i innych), ale z mojego serwera, tylko o wartości około 600 KB/s – HtmHell

Powiązane problemy