下载文件时,我尝试下载大文件,这需要大量的时间用perl从FTP链接下载。 我:perl的超时从FTP
Timeout at C:/Strawberry/perl/lib/Net/FTP.pm
是什么意思,如何解决呢?
感谢
解决方案: 感谢@克里斯·多伊尔 我更改超时值在我的Perl文件"not ftp.pm file"
感谢
下载文件时,我尝试下载大文件,这需要大量的时间用perl从FTP链接下载。 我:perl的超时从FTP
Timeout at C:/Strawberry/perl/lib/Net/FTP.pm
是什么意思,如何解决呢?
感谢
解决方案: 感谢@克里斯·多伊尔 我更改超时值在我的Perl文件"not ftp.pm file"
感谢
使用While循环,你继续跟踪该文件的文件是否可读或不。 如果不是,则设置一些值,否则继续WHILE循环。当文件进入可读状态时,文件被完全下载,你可以去下一行执行。这是解决超时问题的一种方法。
可以增加超时,但如果再次达到超时和您的客户端/服务器不同步,这可能会引发你第一时间拿到了同样的错误,这又是很重要的。
看来,这个问题是由于缺乏误差在你的Perl脚本处理来代替。
当然,你有这样的事情在你的perl脚本:
my $ftp = Net::FTP->new($myhost, Timeout => 10, Debug => 1);
...
$ftp->get($myfile) or print "Got an error";
$ftp->quit();
请注意,这是出于.../perl的/ lib目录/网/ FTP.pm,因为 FTP .pm的是第三方模块(
Kind of library
)您使用的是 达到FTP,我建议你不要去碰它,以避免以后便携 问题。
通常达到超时的FTP.pm内,它进入或打印“得到一个错误”条件,但也有一些情况下,服务器/客户端只是不同步和的FTP.pm只是抛出一个未处理的异常。
此异常将不转到或打印“得到一个错误”条件,因此,你需要抓住它,并把它处理任何其他语言。
在这里,您可以使用eval,因为你需要包起来的代码,捕获异常并处理它。
例如:
my $ftp = Net::FTP->new($myhost, Timeout => 10, Debug => 1);
...
eval {$ftp->get($myfile) or print("Can't get file $myfile") };
if ([email protected] =~ /Timeout/) {
print "Got a timeout Issue: [email protected]";
}
$ftp->quit();
你做了什么来尝试自行解决问题?你看过Net :: FTP文档,也许搜索“超时”? http://search.cpan.org/~shay/libnet-3.08/lib/Net/FTP.pm – Mort
如果您查看单词超时的文档,您首先看到的是Timeout - 以秒为单位设置超时值(默认为120)'所以如果文件的下载时间超过120秒,那么你需要在启动ftp之前更改超时值 –
@Mort我在我的电脑中打开ftp.pm并查找它写为“timout”的变量:'' Timeout => $ ftp-> timeout'我想知道如何改变它“的语法和建议的价值,我不想玩我不明白的东西。 – sara