Giới hạn tốc độ ngược dòng cho web trong Ubuntu 12.10


1

tôi đã tìm thấy chủ đề này , nhưng do dự khi nói đến việc cài đặt mạng của tôi.

Những gì tôi muốn làm là giới hạn tốc độ mà mọi người có thể tải xuống các tệp từ máy chủ web của tôi từ xa. Các kết nối LAN vẫn có thể truyền ở tốc độ tối đa, nhưng mọi thứ bên ngoài mạng cục bộ nên được giới hạn ở mức 200Kb / giây. Điều đó thậm chí có thể? Tôi có thể giới hạn số lượng kết nối trên mỗi máy khách (có thể bằng IP) không?

Nếu điều này không thể được thực hiện ở cấp độ HĐH, có cách nào tôi có thể viết kịch bản bằng PHP không? Có thể đọc X byte vào một tệp và sau đó ngủ ...

Cảm ơn trước!

Câu trả lời:


0

Tôi chắc chắn một cái gì đó như thế này là có thể đạt được vì có các trang web lưu trữ / chia sẻ tệp giới hạn tốc độ tải xuống cũng như tải xuống đồng thời. Cá nhân tôi không biết làm thế nào để thực hiện loại điều này, nhưng tôi hy vọng có thể chỉ cho bạn đi đúng hướng.

Hãy nhìn vào Thùng mã thông báo Thùng bị rò rỉ thuật toán.

Tôi tin rằng có các mô-đun apache bạn có thể cài đặt và định cấu hình để trợ giúp với loại điều này. Hãy thử nhìn vào mod_cband iptables .

Chúc may mắn!

CẬP NHẬT

Nếu bạn đang tìm cách để làm điều đó thông qua PHP, bạn có thể thử cách này ( nguồn ):

// local file that should be send to the client
$local_file = 'test-file.zip';

// filename that the user gets as default
$download_file = 'your-download-name.zip';

// set the download rate limit (=> 20,5 kb/s)
$download_rate = 20.5;

if(file_exists($local_file) && is_file($local_file)) {

    // send headers
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);

    // flush content
    flush();

    // open file stream
    $file = fopen($local_file, "r");

    while (!feof($file)) {

        // send the current file part to the browser
        print fread($file, round($download_rate * 1024));

        // flush the content to the browser
        flush();

        // sleep one second
        sleep(1);
    }

    // close file stream
    fclose($file);

}
else {
    die('Error: The file '.$local_file.' does not exist!');
}

Hình như cband đã biến mất. :
GameCharmer

ah, đó là một người lập dị ... bất kỳ may mắn với iptables? ít nhất bạn biết bạn có một dự phòng với PHP, nhưng chắc chắn không lý tưởng, đặc biệt là do bạn cần xử lý các kết nối LAN khác nhau.
mason81
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.