Thread SpeedyCGI & Try::Tiny catch (4 answers)
Opened by roooot at 2010-12-14 17:56

roooot
 2010-12-14 17:56
#143561 #143561
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Hi Leute, ich benutze CPAN:SpeedyCGI für meine Scripte und CPAN:Try::Tiny fürs Error Handlung.

Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/speedy -w;
use strict;

try {
   die 'aaaargh';
}
catch {
   print 'error'
};

Zeigt mir nichts an, manchmal aber sogar einen 500er.
Verwende ich statt SpeedyCGI nun Perl direkt funktioniert es wie gewünscht.

Hat das mal jemand von euch gehabt? Webserver ist lighty 1.4.28.

laut SpeedyCGI Doku passiert ja folgendes bei nem Request:
Quote
How much of perl's state is kept when speedy starts another request? Do globals keep their values? Are destructors run after the request?

Globals keep their values. Nothing is destroyed after the request. STDIN/STDOUT/STDERR are closed -- other files are not. %ENV and @ARGV are the only globals changed between requests.
Komischerweise wird absolut gar nichts mehr ausgegeben. Der SpeedyCGI Prozess existiert allerdings weiterhin und gibt für andere Aufrufe (die über einen Dispatcher Subs aufrufen) auch noch was aus (die PID bleibt für alle Aufrufe die selbe, es ist also definitiv der gleiche Prozess).

Ich verstehe das nicht so ganz, wieso er nichts mehr ausgibt, wenn in der try Anweisung, die Daten an den Browser sendet ein 'die' Auftritt, im catch Block allerdings auch eine print-Anweisung gegeben ist.
Wenn in anderen try .. catch Blöcken zuvor (die kein print haben) ein Fehler auftritt, funktioniert es wie gewünscht.


Hat jemand das Problem auch schonmal gehabt?


//nachtrag:
ist in dem catch Block zum try Block der etwas printed ein Aufruf auf eine Sub, die ebenfalls etwas printed, wird ausgegeben. Sehr merkwürdiges Verhalten..
Last edited: 2010-12-14 18:02:05 +0100 (CET)
Viele Grüße :)

View full thread SpeedyCGI & Try::Tiny catch