如何从LWP :: Simple的getstore()确定下载速度和数量?

vle*_*lee 2 perl download lwp

使用perl模块LWP :: Simple时,有一种简单的方法可以确定单个getstore()调用下载的速度和数量吗?这对于观察大文件下载的状态很有用.

在我的头脑中,一种方法是:

  1. 存储当前时间(time0)
  2. 在新进程中运行getstore
  3. 轮询已知的目标文件
    • 下载的数量将是当前文件大小(大小)
    • 下载速度会(size/current_time - time0)

我想知道是否有更简单的方法.

欢迎替代建议(也许我应该使用不同的模块?)

yst*_*sth 7

而不是使用LWP::Simple,直接使用LWP :: UserAgent.首先,看看LWP :: Simple :: getstore如何初始化$ ua并调用请求.你想要调用$ua->add_handler指定一个response_data处理程序来做你想做的事情; 默认情况下(至少对于HTTP协议)LWP::UserAgent将读取最多4Kb块并response_data为每个块调用处理程序,但您可以在请求方法参数中建议不同的大小.

如果要区分标题数据和将存储在文件中的实际数据,或者如果存在重定向则执行特殊操作,您可能还需要指定其他处理程序.