2016-04-26 29 views
0

下载文件时,我尝试下载大文件,这需要大量的时间用perl从FTP链接下载。 我:perl的超时从FTP

Timeout at C:/Strawberry/perl/lib/Net/FTP.pm 

是什么意思,如何解决呢?

感谢

解决方案: 感谢@克里斯·多伊尔 我更改超时值在我的Perl文件"not ftp.pm file" 感谢

+0

你做了什么来尝试自行解决问题?你看过Net :: FTP文档,也许搜索“超时”? http://search.cpan.org/~shay/libnet-3.08/lib/Net/FTP.pm – Mort

+0

如果您查看单词超时的文档,您首先看到的是Timeout - 以秒为单位设置超时值(默认为120)'所以如果文件的下载时间超过120秒,那么你需要在启动ftp之前更改超时值 –

+0

@Mort我在我的电脑中打开ftp.pm并查找它写为“timout”的变量:'' Timeout => $ ftp-> timeout'我想知道如何改变它“的语法和建议的价值,我不想玩我不明白的东西。 – sara

回答

0

使用While循环,你继续跟踪该文件的文件是否可读或不。 如果不是,则设置一些值,否则继续WHILE循环。当文件进入可读状态时,文件被完全下载,你可以去下一行执行。这是解决超时问题的一种方法。

0

可以增加超时,但如果再次达到超时和您的客户端/服务器不同步,这可能会引发你第一时间拿到了同样的错误,这又是很重要的。

看来,这个问题是由于缺乏误差在你的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();