|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
datei-existenz prüfen
|
Seitenanfang |
hoi! ich habe auf einer seite auf einen nicht ständig erreichbaren server verlinkt, dessen status ich prüfen möchte. naja, dacht ich, machst du mit ner if-abfrage:if (-e "http://gedichtesammler.dyndns.org/public/bin.da") { $return = "go"; } vorher wird return auf stop gesetzt. blöderweise findet er aber den server so nicht. kann mir da jemand helfen? die datei bin.da hab ich extra angelegt, und auch was reingeschrieben...
Datum: 28.07.2005-00:47

|
re: datei-existenz prüfen
|
Seitenanfang |
| Hi, würde es mal mit LWP::Simple oder LWP:UserAgent probieren. Damit kannst dir Dokumente von anderen Webservern holen und somit denk ich mal auch die Erreichbarkeit testen. gruss cornhulio
Datum: 28.07.2005-07:43

|
re: datei-existenz prüfen
|
Seitenanfang |
ähm... und das was ich mir da gedacht hab geht nur innerhalb des servers, oder wie?
Datum: 28.07.2005-15:34

|
re: datei-existenz prüfen
|
Seitenanfang |
| Hi, das siehst Du genau richtig, weil das Datei-Testoperatoren sind, die sich ihre Informationen aus dem Dateisystem holen. Unter Linux/Unix beispielsweise werden die Inodes gecheckt. Unter Windows bin ich mir nicht sicher, aber ich denke dass perl auch hier die Dateizuordnungstabelle frequentiert. -uw
Datum: 29.07.2005-15:30

|
re: datei-existenz prüfen
|
Seitenanfang |
mit LWP::Simple kann ich zwar herausfinden, dass der server online ist, ist er aber nicht online, hängt sich das script offenbar auf...
#!/usr/bin/perl -wuse CGI qw(:standard) ; use CGI::Carp qw(fatalsToBrowser); use LWP::Simple; use strict; use warnings; my $return = "stop"; my $ftp = "stop"; my $content = get("http://gedichtesammler.dyndns.org/public/bin.da"); my $ftpcontent = get("ftp://gedichtesammler.dyndns.org/public/bin.da"); if (defined $content){ $return = "go"; } if (defined $ftpcontent) { $ftp = "go"; }
auserdem behauptet der debuger beharrlich, dass an zeile 5 was nicht stimmt:
Prototype mismatch: sub main::head vs ($) at /home/www/htdocs/gedichtesammler.de/cgi-bin/downs.pl line 5
Datum: 28.07.2005-16:32

|
re: datei-existenz prüfen
|
Seitenanfang |
| Hallo gedichtesammler, etwas ähnliches mache ich beim Bildersammeln, indem ich erst die Dateigröße hole, bevor ich das ganze Bild lade. Wenn die URL nicht erreichbar ist, bricht die Suche nach ca. 30 Sekunden ab und es wird keine Dateigröße übergeben. Das Timeout ist nicht einstellbar, falls das erforderliche ist, müsstest du mit dem aufwendigeren LWP::UserAgent arbeiten, dort ist das meines Wissens möglich. #!/usr/bin/perl -wuse strict; use LWP::Simple; my @urls = ( 'http://www.klinikum-rosenheim.de/sonstiges/kliroinfo/webcam.jpg', 'http://194.118.55.200/record/current.jpg', 'http://www.ep-bergen.de/m1/bild.jpg' ); foreach my $url (@urls) { my ($content_type, $document_length, $modified_time, $expires, $server) = LWP::Simple::head($url); print "URL=$url, Size=$document_length\n"; next unless $document_length; # Bild holen, abspeichern etc.... }
Datum: 29.07.2005-21:15

|
|

|

|

|
 |

|

|
|