我发现此主题,但在调整网络设置时我却犹豫不决。
我想要做的是限制人们从我的网络服务器远程下载文件的速率。LAN 连接仍应能够全速传输,但本地网络之外的任何内容都应限制为每连接 200Kbps。这可能吗?我可以限制每个客户端的连接数(可能通过 IP)吗?
如果无法在操作系统级别完成此操作,我可以使用 PHP 编写脚本吗?也许将 X 个字节读入文件然后休眠...
提前致谢!
答案1
我确信这样的事情是可以实现的,因为有些文件存储/共享网站会限制下载速度和同时下载数量。我个人不知道如何实现这种事情,但我希望能给你指明正确的方向。
我相信你可以安装和配置 Apache 模块来帮助解决此类问题。尝试查看mod_cband和iptables。
祝你好运!
更新
如果你正在寻找通过 PHP 实现此目的的方法,你可以尝试这个(来源):
// 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!');
}