alarm() will nicht so ganz wie ich
alarm() will nicht so ganz wie ich
am 28.08.2006 16:31:26 von Oliver.Mueske
Hallo NG,
Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln, welche
sich in unsere Anwendung einloggt,
und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe ich
die Module Crypt::SSLeay und
WWW::Mechanize installiert.
Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat, soll
eine Timeoutmeldung ins Logfile
geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da das
Skript in einer Endlosschleife läuft soll sollte das Skript auf jedenfall
weiterlaufen.
Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw. LWP
auf welches Mechanize
ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das Skript ab.
Dann habe ich mich mit dem alarm() versucht dort ist das Problem das es bis
zu einer bestimmten Stelle in der Subroutine,
welche die Überprüfung macht, funktioniert, und ab dann auf einmal nicht
mehr, und zwar ab genau dann wenn der UserAgent
initialisiert wird. Hat dafür jemand eine Erklärung oder Lösung, bzw. gibt
es doch eine Möglichkeit das die Timeout-Methode das Skript
nicht abbricht?
Hier ein kleiner Ausschnitt aus dem Skript:
.....
use strict;
use warnings;
.....
eval
{
local $SIG{ALRM} = sub { die "timeout" };
alarm(2);
webserverdialog($uname, $pw, $log);
alarm(0);
};
if ($@)
{
print STDOUT "Problem! 2 Sekunden vergangen!\n";
}
else {
print STDOUT "Alles klar!\n";
}
....
sub webserverdialog
{
my $uname = shift;
my $pw = shift;
my $log = shift;
$counter++;
#$log->msg(1, "Durchgang Nr.: $counter \n");
# Den Agenten initialisieren
my $agent = WWW::Mechanize->new(autocheck=>1);
$agent->cookie_jar(HTTP::Cookies->new());
-->Ab hier funktioniert der "Alarm" nicht mehr
....
Re: alarm() will nicht so ganz wie ich
am 28.08.2006 21:05:32 von Slaven Rezic
"Oliver Müske" writes:
> Hallo NG,
> Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln, welche
> sich in unsere Anwendung einloggt,
> und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe ich
> die Module Crypt::SSLeay und
> WWW::Mechanize installiert.
>
> Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat, soll
> eine Timeoutmeldung ins Logfile
> geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da das
> Skript in einer Endlosschleife läuft soll sollte das Skript auf jedenfall
> weiterlaufen.
>
> Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw. LWP
> auf welches Mechanize
> ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das
> Skript ab.
Das sollte eigentlich nicht passieren. Bei einem Timeout bekomme ich
immer einen "künstlichen" 500-er Fehler.
>
> Dann habe ich mich mit dem alarm() versucht dort ist das Problem das es bis
> zu einer bestimmten Stelle in der Subroutine,
> welche die Überprüfung macht, funktioniert, und ab dann auf einmal nicht
> mehr, und zwar ab genau dann wenn der UserAgent
> initialisiert wird. Hat dafür jemand eine Erklärung oder Lösung, bzw. gibt
> es doch eine Möglichkeit das die Timeout-Methode das Skript
> nicht abbricht?
Schau mal in der perlipc-Manpage unter "Deferred Signals (Safe
Signals)".
Gruß,
Slaven
--
Slaven Rezic - slaven rezic de
tkrevdiff - graphical display of diffs between revisions (RCS, CVS or SVN)
http://ptktools.sourceforge.net/#tkrevdiff
Re: alarm() will nicht so ganz wie ich
am 28.08.2006 21:25:31 von Steffen Panning
Oliver Müske wrote:
> Hallo NG,
> Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln, welche
> sich in unsere Anwendung einloggt,
> und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe ich
> die Module Crypt::SSLeay und
> WWW::Mechanize installiert.
>
> Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat, soll
> eine Timeoutmeldung ins Logfile
> geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da das
> Skript in einer Endlosschleife läuft soll sollte das Skript auf jedenfall
> weiterlaufen.
>
> Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw. LWP
> auf welches Mechanize
> ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das Skript ab.
Hallo Oliver,
Vorab: Ich habe kenne Mechanize nicht.
ich vermute mal, dass Mechanize auch alarm aufruft. Du hast ja
beschrieben, dass Mechanize auch einen Timeout Mechanismus eingebaut hat.
wenn alarm 2 mal hintereinander aufgrufen wird, gewinnt der letzte alarm
aufruf.
Reine Vermutung:
wenn kein Timeout bei Mechanize angegeben wird, wird in Mechanize
alarm(0) aufgerufen. -> Dein Timeout wird wieder deaktivert.
Hth
Steffen
Re: alarm() will nicht so ganz wie ich
am 29.08.2006 09:36:00 von Oliver.Mueske
"Steffen Panning" schrieb im Newsbeitrag
news:ecvfvi$rik$01$1@news.t-online.com...
> Oliver Müske wrote:
> > Hallo NG,
> > Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln,
welche
> > sich in unsere Anwendung einloggt,
> > und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe
ich
> > die Module Crypt::SSLeay und
> > WWW::Mechanize installiert.
> >
> > Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat,
soll
> > eine Timeoutmeldung ins Logfile
> > geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da
das
> > Skript in einer Endlosschleife läuft soll sollte das Skript auf
jedenfall
> > weiterlaufen.
> >
> > Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw.
LWP
> > auf welches Mechanize
> > ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das Skript
ab.
>
>
> Hallo Oliver,
>
> Vorab: Ich habe kenne Mechanize nicht.
>
> ich vermute mal, dass Mechanize auch alarm aufruft. Du hast ja
> beschrieben, dass Mechanize auch einen Timeout Mechanismus eingebaut hat.
>
> wenn alarm 2 mal hintereinander aufgrufen wird, gewinnt der letzte alarm
> aufruf.
>
> Reine Vermutung:
>
> wenn kein Timeout bei Mechanize angegeben wird, wird in Mechanize
> alarm(0) aufgerufen. -> Dein Timeout wird wieder deaktivert.
>
> Hth
>
> Steffen
Hi Steffen,
Mechanize selbst hat keinen Timeoutmechanismus, sondern erbt diesen von LWP
;-)
Vor die hat ja schon jemand geschrieben das ein künstlicher 500er-Fehler
produziert werden sollte...
warum dies bei mir gerade nciht so ist, ist eine gute Frage...
Gruß
Olli
Re: alarm() will nicht so ganz wie ich
am 29.08.2006 09:37:41 von Oliver.Mueske
"Slaven Rezic" schrieb im Newsbeitrag
news:87odu4bs03.fsf@vran.herceg.de...
> "Oliver Müske" writes:
>
> > Hallo NG,
> > Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln,
welche
> > sich in unsere Anwendung einloggt,
> > und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe
ich
> > die Module Crypt::SSLeay und
> > WWW::Mechanize installiert.
> >
> > Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat,
soll
> > eine Timeoutmeldung ins Logfile
> > geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da
das
> > Skript in einer Endlosschleife läuft soll sollte das Skript auf
jedenfall
> > weiterlaufen.
> >
> > Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw.
LWP
> > auf welches Mechanize
> > ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das
> > Skript ab.
>
> Das sollte eigentlich nicht passieren. Bei einem Timeout bekomme ich
> immer einen "künstlichen" 500-er Fehler.
>
> >
> > Dann habe ich mich mit dem alarm() versucht dort ist das Problem das es
bis
> > zu einer bestimmten Stelle in der Subroutine,
> > welche die Überprüfung macht, funktioniert, und ab dann auf einmal nicht
> > mehr, und zwar ab genau dann wenn der UserAgent
> > initialisiert wird. Hat dafür jemand eine Erklärung oder Lösung, bzw.
gibt
> > es doch eine Möglichkeit das die Timeout-Methode das Skript
> > nicht abbricht?
>
> Schau mal in der perlipc-Manpage unter "Deferred Signals (Safe
> Signals)".
>
> Gruß,
> Slaven
>
> --
> Slaven Rezic - slaven rezic de
>
> tkrevdiff - graphical display of diffs between revisions (RCS, CVS or
SVN)
> http://ptktools.sourceforge.net/#tkrevdiff
Hi Slaven,
werd mir das mal zu gemüte führen.
Hmmm wieso wird bei mir dann kein 500er-Fehler erzeugt... hast du da eine
Idee?
Gruß
Olli
Re: alarm() will nicht so ganz wie ich
am 29.08.2006 21:09:22 von Slaven Rezic
"Oliver Müske" writes:
> "Slaven Rezic" schrieb im Newsbeitrag
> news:87odu4bs03.fsf@vran.herceg.de...
> > "Oliver Müske" writes:
> >
> > > Hallo NG,
> > > Ich habe hier ein kleines Problem. Ich soll eine Überwachung basteln,
> welche
> > > sich in unsere Anwendung einloggt,
> > > und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt habe
> ich
> > > die Module Crypt::SSLeay und
> > > WWW::Mechanize installiert.
> > >
> > > Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten hat,
> soll
> > > eine Timeoutmeldung ins Logfile
> > > geschrieben werden, und die Überprüfung fürs an der Stelle abbrechen. Da
> das
> > > Skript in einer Endlosschleife läuft soll sollte das Skript auf
> jedenfall
> > > weiterlaufen.
> > >
> > > Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize bzw.
> LWP
> > > auf welches Mechanize
> > > ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das
> > > Skript ab.
> >
> > Das sollte eigentlich nicht passieren. Bei einem Timeout bekomme ich
> > immer einen "künstlichen" 500-er Fehler.
> >
> > >
> > > Dann habe ich mich mit dem alarm() versucht dort ist das Problem das es
> bis
> > > zu einer bestimmten Stelle in der Subroutine,
> > > welche die Überprüfung macht, funktioniert, und ab dann auf einmal nicht
> > > mehr, und zwar ab genau dann wenn der UserAgent
> > > initialisiert wird. Hat dafür jemand eine Erklärung oder Lösung, bzw.
> gibt
> > > es doch eine Möglichkeit das die Timeout-Methode das Skript
> > > nicht abbricht?
> >
> > Schau mal in der perlipc-Manpage unter "Deferred Signals (Safe
> > Signals)".
> >
> > Gruß,
> > Slaven
> >
> > --
> > Slaven Rezic - slaven rezic de
> >
> > tkrevdiff - graphical display of diffs between revisions (RCS, CVS or
> SVN)
> > http://ptktools.sourceforge.net/#tkrevdiff
>
> Hi Slaven,
> werd mir das mal zu gemüte führen.
> Hmmm wieso wird bei mir dann kein 500er-Fehler erzeugt... hast du da eine
> Idee?
>
Betrifft es eigentlich nur https-Seiten? Vielleicht hat Crypt::SSLeay
da seine Finger im Spiel und reagiert nicht auf Timeouts.
Meine Erfahrung beruht nur auf reinen http-Seiten.
Gruß,
Slaven
--
Slaven Rezic - slaven rezic de
Visualize XML files in a Tk text widget:
http://search.cpan.org/search?mode=module&query=Tk::XMLViewe r
Re: alarm() will nicht so ganz wie ich
am 30.08.2006 09:48:37 von Oliver.Mueske
"Slaven Rezic" schrieb im Newsbeitrag
news:871wqzickd.fsf@vran.herceg.de...
> "Oliver Müske" writes:
>
> > "Slaven Rezic" schrieb im Newsbeitrag
> > news:87odu4bs03.fsf@vran.herceg.de...
> > > "Oliver Müske" writes:
> > >
> > > > Hallo NG,
> > > > Ich habe hier ein kleines Problem. Ich soll eine Überwachung
basteln,
> > welche
> > > > sich in unsere Anwendung einloggt,
> > > > und wenn alles wieder geht ausloggt. Da der Webserver SSL benutzt
habe
> > ich
> > > > die Module Crypt::SSLeay und
> > > > WWW::Mechanize installiert.
> > > >
> > > > Wenn nun die Application aufgrund eines Fehlers längere Ladezeiten
hat,
> > soll
> > > > eine Timeoutmeldung ins Logfile
> > > > geschrieben werden, und die Überprüfung fürs an der Stelle
abbrechen. Da
> > das
> > > > Skript in einer Endlosschleife läuft soll sollte das Skript auf
> > jedenfall
> > > > weiterlaufen.
> > > >
> > > > Zuerst habe ich versucht mit der Timeout-Methode von WWW:Mechanize
bzw.
> > LWP
> > > > auf welches Mechanize
> > > > ja aufsetzt zu arbeiten, aber diese bricht bei einem Timeout das
> > > > Skript ab.
> > >
> > > Das sollte eigentlich nicht passieren. Bei einem Timeout bekomme ich
> > > immer einen "künstlichen" 500-er Fehler.
> > >
> > > >
> > > > Dann habe ich mich mit dem alarm() versucht dort ist das Problem das
es
> > bis
> > > > zu einer bestimmten Stelle in der Subroutine,
> > > > welche die Überprüfung macht, funktioniert, und ab dann auf einmal
nicht
> > > > mehr, und zwar ab genau dann wenn der UserAgent
> > > > initialisiert wird. Hat dafür jemand eine Erklärung oder Lösung,
bzw.
> > gibt
> > > > es doch eine Möglichkeit das die Timeout-Methode das Skript
> > > > nicht abbricht?
> > >
> > > Schau mal in der perlipc-Manpage unter "Deferred Signals (Safe
> > > Signals)".
> > >
> > > Gruß,
> > > Slaven
> > >
> > > --
> > > Slaven Rezic - slaven rezic de
> > >
> > > tkrevdiff - graphical display of diffs between revisions (RCS, CVS
or
> > SVN)
> > > http://ptktools.sourceforge.net/#tkrevdiff
> >
> > Hi Slaven,
> > werd mir das mal zu gemüte führen.
> > Hmmm wieso wird bei mir dann kein 500er-Fehler erzeugt... hast du da
eine
> > Idee?
> >
>
> Betrifft es eigentlich nur https-Seiten? Vielleicht hat Crypt::SSLeay
> da seine Finger im Spiel und reagiert nicht auf Timeouts.
>
> Meine Erfahrung beruht nur auf reinen http-Seiten.
>
> Gruß,
> Slaven
>
> --
> Slaven Rezic - slaven rezic de
>
> Visualize XML files in a Tk text widget:
> http://search.cpan.org/search?mode=module&query=Tk::XMLViewe r
Also ganz ausschliessen würd ich das nicht, die ERROR-Meldung welche
ausgegeben wird ist folgende:
Error POSTing https://xxx.xxx.xxx.xxx/skript SSL read timeout: at
webcheck.plx line 96
Ich bin mit meinem Latein mittlerweile echt am Ende...