gpt4 book ai didi

Perl 大容量下载直接到文件(以避免 RAM 过载)

转载 作者:行者123 更新时间:2023-12-05 00:30:19 25 4
gpt4 key购买 nike

我正在尝试将大约 1 GB 大小的文件下载到具有 1 GB RAM 内存的服务器,因此如果我尝试将其下载到变量中(下面的代码),操作系统会因 RAM 过载而终止进程.

require LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->timeout(3600);
$ua->env_proxy;

my $response = $ua->get('http://example.com/largefile.xml');

if ($response->is_success) {
print "File downloaded\n";
}
else {
die $response->status_line;
}

我认为唯一可行的方法是使用 system("wget ...") (或 curl 或类似的东西),但我确信有一种正确的方法可以直接使用 Perl .

你知道不使用系统调用直接将其下载到文件的任何方法或选项吗?

最佳答案

是的。看LWP::UserAgentget方法:

$ua->get( $url , $field_name => $value, ... )

Fields names that start with ":" are special. These will not initialize headers of the request but will determine how the response content is treated. The following special field names are recognized:

:content_file   => $filename

If a $filename is provided with the :content_file option, then the response content will be saved here instead of in the response object.

注意 - 它可能无法很好地处理文件系统错误,因此请检查您是否可以写入该位置。 (权限、目录存在等)

关于Perl 大容量下载直接到文件(以避免 RAM 过载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com