2012-07-01 56 views
5

Tôi đã mua một máy chủ và tôi cần kiểm tra kết nối internet của nó (tốc độ).Cách kiểm tra tốc độ tải lên và tải xuống của máy chủ của tôi?

Có cách nào dễ dàng để làm điều đó không?

Tôi googled nhưng tôi không thể tìm thấy bất cứ điều gì ...

Tôi đã làm điều này:

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


?> 

Is it correct?

+0

Để biết tốc độ tải xuống, điều này xuất hiện trong tâm trí của tôi: Cài đặt trình khách dòng lệnh bittorrent và tải xuống bản phân phối Linux (không quá mới, nhưng không quá cũ, để có nhiều hạt). Thông thường tất cả những hạt giống này có thể gửi nhanh như máy chủ của bạn. – Aufziehvogel

+0

Có vẻ ổn với tôi. Nó có hoạt động không? – PeeHaa

Trả lời

9

Hãy thử:

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

tôi đã làm điều này: Có đúng không? – HtmHell

+0

Gần như, nó sẽ tạo ra các byte trên giây, không phải là dòng đầu tiên của MB/s – lauriys

5

Nếu bạn có máy tính để bàn từ xa, sau đó cài đặt một trình duyệt web và đi đến speedtest.net và thử nghiệm một tốc độ.

Nếu không, dưới đây là cách bạn có thể kiểm tra tốc độ tải của máy chủ:

  • đăng nhập như là người chủ
  • loại wget http://cachefly.cachefly.net/100mb.test
  • bạn sẽ thấy một cái gì đó giống như 100%[======================================>] 104,857,600 10.7M/s - 10.7M/s là một download tốc độ.

Nếu bạn có nhiều hơn 1 máy chủ, bạn có thể kiểm tra tốc độ tải lên bằng cách truyền tệp giữa 2 máy chủ.

0

Đối với việc tải xuống, bạn có thể tạo một kịch bản mà sẽ tính toán tốc độ download trung bình:

$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

. mictotime. Ngoài ra, 100 KB = 102400 B, không phải 100000. – lauriys

+0

Microtime IMHO sẽ tốt hơn và chính xác hơn. – lauriys

+0

Tôi nhận thấy điều 'microtime' vài giây sau khi đăng. Cảm ơn đã chỉ ra điều đó. Về kích thước tập tin theo ý kiến ​​của tôi không quan trọng, sẽ không tạo ra nhiều khác biệt trong kết quả. –

2

Có nó kết nối đến một máy chủ bạn biết chạy nhanh (như Google). Sau đó, đo thời gian gửi gói đầu tiên để nhận gói đầu tiên - đó là thời gian tải lên của bạn. Thời gian từ khi nhận gói đầu tiên đến cuối cùng là thời gian tải xuống. Sau đó chia cho lượng dữ liệu được chuyển và có kết quả của bạn.

Ví dụ:

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

(Bạn sẽ nhận được một thông báo lỗi từ máy chủ của Google, trên tài khoản của Content-Length tiêu đề thiếu)

Run nó một vài lần, nhận được trung bình, nhưng không chạy quá nhiều vì tôi không nghĩ Google thích nó quá nhiều.

+0

Cảm ơn, nhưng kết quả tôi nhận được không thực sự có ý nghĩa ... Khi tôi tải xuống một tệp từ máy chủ của tôi ở mức 600kb/giây và tôi có kết nối Internet 100MB/s ... Sử dụng mã của bạn tôi nhận được : KẾT QUẢ: Kết nối: 75.366973877ms Tải lên: 1.000.037 byte trong 0.192752122879s (5066.60377186kb/s) Tải xuống: 1.081 byte trong 2.69412994385E-5s (39183.8584071kb/s) – HtmHell

+0

Khi bạn tải xuống tệp từ máy chủ của mình, mạng của bạn là nút cổ chai . Máy chủ thường có kết nối internet tốt hơn nhiều, đó là lý do tại sao thử nghiệm kết nối với một máy chủ khác. –

+0

Có, và tôi thường tải xuống ở mức 12 MB/s (Từ torrent và nội dung) nhưng từ máy chủ của tôi, chỉ ở mức 600 KB/giây – HtmHell

Các vấn đề liên quan