タイムアウトを長くすることはできますが、タイムアウトにもう一度なり、サーバー/クライアントが同期していない場合は、初めて同じエラーが発生する可能性があります。
あなたの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以来、ネット/ FTP.pm、 .pmは第三者モジュール(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 ([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
タイムアウトという単語のドキュメントを見ると、最初に表示されるのは 'タイムアウト - 秒単位のタイムアウト値を設定することです(デフォルトは120)ですので、ファイルがダウンロードに120秒以上かかる場合は、ftpを開始する前にタイムアウト値を変更する必要があります。 –
@Mort私のコンピュータでftp.pmを開き、タイムアウト変数を探します: Timeout => $ ftp-> timeout '構文の変更方法を知りたいのですが、提案された値は何ですか?私は理解できないもので遊びたくありません。 – sara