2

是否有任何 Perl 模块可用于下载限制?我想下载某个文件,但将下载速率限制为特定数量的 KB/sec 。

4

2 回答 2

6

看起来 WWW::Curl 和 CURLOPT_MAX_RECV_SPEED_LARGE 选项是你想要的:

#!/usr/bin/env perl

use strict;
use warnings;
use feature ':5.10';
use WWW::Curl::Easy;

# Setting the options
my $curl = WWW::Curl::Easy->new;

$curl->setopt(CURLOPT_HEADER,1);
$curl->setopt(CURLOPT_URL, 'http://www.google.com');
$curl->setopt(CURLOPT_MAX_RECV_SPEED_LARGE, 1);

my $response_body;
open my $fh, ">", \$response_body or die; # presumably this can be a real file as well.
$curl->setopt(CURLOPT_WRITEDATA,$fh);

my $ret = $curl->perform;
die 'Error: '. $curl->strerror($ret) if $ret;

my $response_code = $curl->getinfo(CURLINFO_HTTP_CODE);
say "Received response: $response_body";

在此示例中,我们以每秒一个字节的速度下载 Google。非常慢。

于 2009-02-12T03:00:00.717 回答
3

一种不限于 Perl 也不限于特定协议的技术是使用涓涓细流

涓流是一种便携式轻量级用户空间带宽整形器。它可以在协作模式(与滴流一起)或独立模式下运行。

另请参阅如何在 C 中限制套接字连接的带宽?

将这种技术打包为 Perl 模块(例如,子类 IO::Handle)会很好,但我不知道有一个。

于 2009-02-12T01:45:21.767 回答