![](/img/trans.png)
[英]Perl LWP::Simple::getstore How to check if the file exists in destination directory
[英]How can I determine the download speed and amount from LWP::Simple's getstore()?
使用perl模块LWP :: Simple时 ,有一种简单的方法可以确定单个getstore()调用下载的速度和数量吗? 这对于观察大文件下载的状态很有用。
在我的头脑中,一种方法是:
我想知道是否有更简单的方法。
欢迎替代建议(也许我应该使用不同的模块?)
而不是使用LWP::Simple
,直接使用LWP :: UserAgent 。 首先,看看LWP :: Simple :: getstore如何初始化$ ua并调用请求。 你需要调用$ua->add_handler
来指定一个response_data
处理程序来做你想做的事情; 默认情况下(至少对于HTTP协议) LWP::UserAgent
将读取最多4Kb块并为每个块调用response_data
处理程序,但您可以在请求方法参数中建议不同的大小。
如果要区分标题数据和将存储在文件中的实际数据,或者如果存在重定向则执行特殊操作,您可能还需要指定其他处理程序。
除非您有其他要求(例如在下载期间查看速率和大小),否则您概述的步骤最容易思考和实施。
您可以在LWP :: Simple中导出基础用户代理对象。 如果您只想观看一次性下载,可以设置user-agent的show_progress
位:
use LWP::Simple qw($ua getstore);
$ua->show_progress(1);
getstore(
'http://www.theperlreview.com/Issues/subscribers.html',
'subscribers.html'
);
要做更多的工作,你可以使用LWP :: Simple,但仍然做同样的事情,建议 :
use LWP::Simple qw($ua);
$ua->response_header(
sub {
my($response, $ua, $h) = @_;
...
}
);
在该子程序中,您可以读取数据并随意执行任何操作,包括保留计时器。 一旦得到答案,就可以删除那段代码并返回到getstore
。
Flavio Poletti为2009年春季的Perl评论撰写了“观看LWP的活动” ,并展示了该技术的许多用途。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.