Schrift
[thread]769[/thread]

In einer Schleife maximal 30 Sekunden warten: ... sonst den nächsten bearbeiten. WIE?

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
olruebe01
 2006-07-04 19:44
#8227 #8227
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
Hallo Profis,

habe mal wieder eine Frage:

Ich habe eine Liste mit URLs zu Daten, die ich per Script und Cronjob runterladen / aktualisieren möchte.

Ich mache das so: In einer Schleife nehme ich mir alle URLs, lasse die runterladen (LWP:Useragent) und lokal speichern. Hat das geklappt: nächste URL.

Nun habe ich ein Problem: Beim Test war eine URL (eine der ersten) nicht erreichbar. Mein Script hat nun endlos auf das Ergebnis gewartet und die nachfolgenden URLs gar nicht mehr bearbeitet.

Meine Frage: Wie erreiche ich, dass das Script pro URL 30 Sekunden auf das Ergebnis wartet und wenn es innerhalb dieser 30 Sekunden nicht kommt, diese URL abbricht und einfach die nächste URL in der Schleife bearbeitet?

Hoffe, das ist verständlich?!?

Danke schon mal,
Oliver
betterworld
 2006-07-04 20:15
#8228 #8228
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Vielleicht mit $SIG{ALRM} und alarm?
Strat
 2006-07-04 20:41
#8229 #8229
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
perldoc -f alarm
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2006-07-04 21:13
#8230 #8230
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
kann man LWP::UserAgent keinen timeout mitgeben? das wäre dann sicher
sauberer als alarm().
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
olruebe01
 2006-07-04 21:23
#8231 #8231
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
@ pq: Das wäre natürlich perfekt.

Ich habe es jetzt so versucht:

while (meine_bedingung) {
print $URL # zur kontrolle
$SIG{ALRM} = sub { next };
alarm 60;
tu_was_du_tun_sollst;
}

Es passiert folgendes: Die nicht erreichbare URL wird SOFORT übesprungen. Sie wird "zur Kontrolle" über print ausgegeben aber SOFORT wird auch die nächste Ausgegeben und korrekt bearbeitet.
Er wartet also gar nicht erst 60 Sekunden ab...?!?

Wenn ich versuche die "defekte" URL per Browser auszurufen, macht mein Browser nichts als mir die Sanduhr anzuzeigen.

Wieso ein solches?
pq
 2006-07-04 21:40
#8232 #8232
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also in der manpage von CPAN:LWP::UserAgent steht $ua->timeout(10);
hat das nicht funktioniert?

deine benutzung von alarm() ist so nicht korrekt. in perldoc -f alarm steht ja ein beispiel.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
esskar
 2006-07-05 02:28
#8233 #8233
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
defualt von timeout ist 180 hat es einfach nur ewig (also drei minuten :) ) gedauert oder hat es echt gar nichts mehr getan?
olruebe01
 2006-07-05 21:16
#8234 #8234
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
Ich denke ich muss mal "Kommando zurück" rufen...

Ich wollte eben Esskars 180 Sekunden überprüfen und habe daher das Script wieder in den Originalzustand gesetzt (alarm raus, etc). Jetzt ist das gleiche, wie ich es schon beschrieben habe... Das Script kommt zur betreffenden URL, schreibt en Namen (bearbeitet diese also), überspring die dann aber korrekt und macht weiter wie es soll...

Anscheinend hatt ich also irgendwo einen anderen Fehler, den ich mir jetzt zufällig wieder ausgebaut habe.
Ich weiß also nicht warum aber jetzt (im Moment) geht es...

Sollte mir da noch was auffallen, melde ich mich natürlich wieder.

Sorry, für die anscheinend unnötige (Denk-)arbeit...

Und vielen Dank natürlich!!
esskar
 2006-07-05 21:51
#8235 #8235
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
würde dir trotzdem empfehlen den timeout zu setzen!
kristian
 2006-07-05 23:07
#8236 #8236
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo
Lustige Beiträge sehe ich hier...

> Ich habe eine Liste mit URLs zu Daten, die ich per Script und Cronjob runterladen / aktualisieren möchte

Ich kann es kaum glauben, dass niemand fragt wem die Urls denn gehören.
Seine können es nicht sein, sonst wüsste er, warum und wie er da gebklockt wird.
Ihr helft da IMHO blind beim Content-Diebstahl.

Es gibt Leute die leben von Ihren Webseiten und müssen ständig neue Techniken entwickeln, um sich vor Leuten, die nur mal eben ne Liste abarbeiten wollen, zu schützen.

Gruss Kristian\n\n

<!--EDIT|kristian|1152126999-->
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-07-04 19:44.