Hallo,nutze ein Perl-Script welches täglich Dateien lädt.
Dabei handelt es sich jeweils um ca. 1MB Text-Dateien.
Wenn es mehr als die üblichen 50 Dateien laden soll bricht das Script fast immer ab.
Fehlermeldung:
Net::FTP=GLOB(0x8598b1c)->message():
Manchmal schafft es ca. 250 Stück, manchmal auch nur 90.
Bin nicht 100% sicher, dass FTP das Problem ist, siehe nicht funktionierender Lösungsansatz unten.
Hier die essentiellen Teile des Scriptes
use Net::FTP;
use CGI qw/:standard/;
use strict;
use warnings;
$ftp = Net::FTP->new($cfg->{remotehost},Timeout => 60);
$ftp->login($cfg->{ftpuser},$cfg->{ftppass});
$ftp->ascii();
$ftp->cwd($cwddir);@filelist = $ftp->ls()
my $total = scalar(@filelist);
foreach (@sorted) {
$ftp->get("$remotefile","$localfile");
}
Als Lösungsansatz habe ich statt dem $ftp->get() folgendes hinzugefügt um bei Abbruch nach Wartezeit neu zu verbinden. -> Keine Änderung
my $errTries = 0;
while ($errTries < 3) {
if ($ftp->get("$remotefile","$localfile")) {
/* success */
$errTries = 5;
} else {
$errTries++;
$ftp->quit();
sleep(30);
undef($ftp);
my $ftp = Net::FTP->new($cfg->{remotehost},Timeout => 60);
$ftp->login($cfg->{ftpuser},$cfg->{ftppass});
$ftp->ascii();
$ftp->cwd($cwddir);
}
}
Datum: 13.07.2008-16:51
