簡體   English   中英

從 ftp 下載文件時 perl 超時

[英]perl timeout when downloading file from ftp

我嘗試下載大文件,這需要使用 perl 從 ftp 鏈接下載大量時間。 我有:

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

這是什么意思以及如何解決?

謝謝

解決方案:謝謝@Chris Doyle 我在我的 perl 文件"not ftp.pm file"更改了超時值謝謝

您可以增加超時,但重要的是,如果再次達到超時並且您的服務器/客戶端不同步,它可能會再次拋出您第一次遇到的相同錯誤。

問題似乎是由於您的 Perl 腳本中缺少錯誤處理。

你的 perl 腳本肯定有這樣的東西:

my $ftp = Net::FTP->new( $myhost, Timeout => 10, Debug => 1 );
...
$ftp->get($myfile) or print "Got an error";
$ftp->quit();

請注意這是在.../perl/lib/Net/FTP.pm 之外,因為 FTP.pm 是您用來訪問 ftp 的第三方模塊( Kind of library ),我建議您不要碰它以避免以后出現便攜性問題。

通常在 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 ($@ =~ /Timeout/) {
    print "Got a timeout Issue: $@";
}

$ftp->quit();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM