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

标签 perl download lwp

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

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

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

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

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

最佳答案

不使用 LWP::Simple,而是使用 LWP::UserAgent直接地。作为起点,请查看 LWP::Simple::getstore 如何初始化 $ua 并调用请求。您需要调用 $ua->add_handler 来指定一个 response_data 处理程序来执行您想要的任何操作;默认情况下(至少对于 HTTP 协议(protocol))LWP::UserAgent 将读取最多 4Kb 的 block 并为每个 block 调用 response_data 处理程序,但您可以建议不同的请求方法参数中的大小。

如果你想区分头数据和将存储在文件中的实际数据,或者如果有重定向则做一些特殊的事情,你可能还想指定其他处理程序。

关于perl - 如何确定 LWP::Simple 的 getstore() 的下载速度和数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1778092/

相关文章:

perl - OCSP resolve_blocking() 和 LWP::UserAgent

perl - 节省内存和编译时间

python - 我需要能够重新下载提交到我的 django 网站上的文档

perl - 如何打印到 Perl 中的变量?

java - android,检查 url 是否可以下载东西

php - 在发送给用户之前重命名文件?

linux - 脚本无法正确获取

perl - LWP拒绝通过HTTPS连接

python - 从 python 运行 perl 脚本

Perl:如何在没有错误消息的情况下 "die"?