Schrift
[thread]7908[/thread]

FTP und Timeout

Leser: 1


<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
simps1
 2006-04-20 16:50
#65125 #65125
User since
2006-03-08
13 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich habe ein kleines FTP-Script geschrieben, das Dateien von A nach B kopiert. Soweit so gut. Wenn aber zwischendrin die Leitung abbricht (weil ich z.B. den Stecker ziehe), meckert Perl nach den eingestellten Timeout-Sekunden

Timeout at ../Net/FTP.pm line 789

und bricht die weitere Ausführung des Scriptes ab. Wie kann ich den Timeout abfangen bzw. das Script dazu veranlassen, trotz timeout fortzufahren?

Hoffe, Ihr könnt mir helfen!

Cheers,
chris
GwenDragon
 2006-04-20 17:09
#65126 #65126
User since
2005-01-17
14830 Artikel
Admin1
[Homepage]
user image
Schau doch mal unter perldoc Net::FTP da steht was bei new (HOST [,OPTIONS]).
Da ist auch das Timeout. Das ist das Defaulttimeout für alle Aktionen.
Zusätzlich kannst du es bei read und write setzen.\n\n

<!--EDIT|GwenDragon|1145538914-->
Taulmarill
 2006-04-20 17:09
#65127 #65127
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn Net::FTP da keine eingebaute möglichkeit hat (kenne das modul nicht so gut) könntest du den aufruf in einen eval-block packen. ob die ausführung geklappt hat, kannst du dann durch überprüfen der variable $@ herausfinden.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
master
 2006-04-20 17:09
#65128 #65128
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
ev mit dem @ vor der funktion... dann wurd die fehlermeldung unterdrückt
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
simps1
 2006-04-20 17:20
#65129 #65129
User since
2006-03-08
13 Artikel
BenutzerIn
[default_avatar]
Danke für die schnellen Antworten :)

@Taulmarill: Interessante Idee ... probier ich mal aus!

@GwenDragon: Ja, aber da kann ich nur die Zeit einstellen und keine Aktion a la "onTimeout" ...

@master: Echt? Ich dachte, das wäre so ne PHP Eigenart ... probier ich auch gleich mal aus!

Am Liebsten wäre mir aber, das Event "Script-Abbruch" a la Signal-Handler zu unterbinden. Habt Ihr da eine Idee, wie ich das clever anstelle?

Gruß und Dank!\n\n

<!--EDIT|simps1|1145539253-->
GwenDragon
 2006-04-20 17:22
#65130 #65130
User since
2005-01-17
14830 Artikel
Admin1
[Homepage]
user image
[quote=master,20.04.2006, 15:09]ev mit dem @ vor der funktion... dann wurd die fehlermeldung unterdrückt[/quote]
Nein! Perl ist nicht PHP!
Ein @ vor dem Aufruf unterdrückt keine Warnung!
nepos
 2006-04-20 18:33
#65131 #65131
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also in der Doku steht nix zum Punkt moeglicher Fehler. Ich wuerde das dann mit nem Eval-Block machen.
Matze
 2006-04-20 18:42
#65132 #65132
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Quote
ev mit dem @ vor der funktion... dann wurd die fehlermeldung unterdrückt

Fast genauso einfach wäre es $^W auf 0 zu setzten bevor du die funktion aufrufst, danach wieder zurück.
Das klappt aber nur, wenn das Modul auch nur Fehler ausgibt falls -w oder -W gesetzt sind.

Manche Module geben ja immer Fehler aus...

Du kannst es ja mal ausprobieren.

MfG. Matze
Mit freundlichen Grüßen: Matze
Crian
 2006-04-20 18:57
#65133 #65133
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Sonst vorher STDERR umleiten, hinterher zurücksetzen. (-> select)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
GwenDragon
 2006-04-20 20:03
#65134 #65134
User since
2005-01-17
14830 Artikel
Admin1
[Homepage]
user image
Was spricht dagegen den Timeout auf 99999999 zu setzen?
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2006-04-20 16:50.