使用 perl 模块时 LWP::Simple ,是否有一种简单的方法来确定单个 getstore() 调用下载的速度和数量?这对于观察大文件下载的状态很有用。
在我的脑海中,一种方法是:
- 存储当前时间(time0)
- 在新进程中运行 getstore
- 轮询已知目标文件
- 下载量将是当前文件大小(大小)
- 下载速度为 (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/