You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Michael Wenko <mw...@ecce-terram.de> on 2014/07/10 19:33:27 UTC

Problem mit FCGI und Perl

Hallo,

ich möchte in Perl (FCGI.pm) unter Umständen die FCGI Schleife (while fcgi->Accept) verlassen und die Instanz, die den letzten Request bearbeitet hat, zu beenden.
Dazu verlasse ich die Schleife derzeit mit last:

while( $fcgirequest->Accept ) {

...

if( $beendeDich ) {
	last;
} 

}

Dies führt unter Umständen dazu, dass die Antwort auf den Request den Client nicht mehr erreicht und stattdessen der Apache einen 500 Fehler an den Client schickt, obwohl
der Prozess erst beendet wird, nachdem die vollständige Antwort an den Client geschrieben wurde. Ich habe schon probiert dem FCGI Objekt einen Hint zu schicken, dass die
Antwort vollständig ist: $fcgirequest->Finish() Aber das bewirkt nicht, dass der Client die Antwort anzeigt.

Apache ist Version 2.2.15.

Hat jemand eine Hinweis, wieso diese Vorgehensweise problematisch ist oder wie man auf besser Art und Weise den Lebenszyklus einer Instanz beenden sollte?



Mit freundlichen Grüßen,
	Michael Wenko


--
ECCE TERRAM Internet Services GmbH
Michael Wenko
An der grossen Wisch 36, D-26133 Oldenburg
phone: +49 441 500 120, fax: +49 441 500 1229
OL HRB 3757, GL: F. Simon

"Social Media is like teen sex. Everyone wants to do it. Nobody knows how. When its finally done there is surprise it's not better." Avianash Kaushik


Re: Problem mit FCGI und Perl

Posted by Michael Wenko <mw...@ecce-terram.de>.
Hallo Björn,

Am 15.07.2014 um 16:36 schrieb Bjoern Hoehrmann <de...@gmx.net>:

> * Michael Wenko wrote:
>> Dies führt unter Umständen dazu, dass die Antwort auf den Request den Client nicht mehr erreicht und stattdessen der Apache einen 500 Fehler an den Client schickt, obwohl
>> der Prozess erst beendet wird, nachdem die vollständige Antwort an den Client geschrieben wurde. Ich habe schon probiert dem FCGI Objekt einen Hint zu schicken, dass die
>> Antwort vollständig ist: $fcgirequest->Finish() Aber das bewirkt nicht, dass der Client die Antwort anzeigt.
> 
> Vermutlich suchst Du `$req->LastCall()`.
Ja, sowas hatte ich gesucht, liefert aber leider den gleichen Effekt, wenn ich das aufrufe, bekommt der Client vom Webserver einen 500 HTTP Fehler geliefert und
im Log findet sich die Meldung, dass der Perl Prozess unerwartet beendet wurde. Nach Verlassen der FCGI Schleife beendet sich das Program aber regulär aus meiner Sicht. Offenbar ist das aber aus Sicht des Apache nicht der Fall. Greife ich auf den Service via Proxy oder Firewall zu, verhält sich der Client korrekt, als würde die Antwort auf dem Weg 'repariert/vervollständigt' oder etwas 'ausgefiltert'.

Gibt es eine Idee, an welcher Stelle ich weiter graben/testen/suchen sollte, um diesem Phänomen auf die Schliche zu kommen?


Mit freundlichen Grüßen,
	Michael Wenko

--
ECCE TERRAM Internet Services GmbH
Michael Wenko
An der grossen Wisch 36, D-26133 Oldenburg
phone: +49 441 500 120, fax: +49 441 500 1229
OL HRB 3757, GL: F. Simon

"Social Media is like teen sex. Everyone wants to do it. Nobody knows how. When its finally done there is surprise it's not better." Avianash Kaushik


Re: Problem mit FCGI und Perl

Posted by Bjoern Hoehrmann <de...@gmx.net>.
* Michael Wenko wrote:
>Dies führt unter Umständen dazu, dass die Antwort auf den Request den Client nicht mehr erreicht und stattdessen der Apache einen 500 Fehler an den Client schickt, obwohl
>der Prozess erst beendet wird, nachdem die vollständige Antwort an den Client geschrieben wurde. Ich habe schon probiert dem FCGI Objekt einen Hint zu schicken, dass die
>Antwort vollständig ist: $fcgirequest->Finish() Aber das bewirkt nicht, dass der Client die Antwort anzeigt.

Vermutlich suchst Du `$req->LastCall()`.
-- 
Björn Höhrmann · mailto:bjoern@hoehrmann.de · http://bjoern.hoehrmann.de
Am Badedeich 7 · Telefon: +49(0)160/4415681 · http://www.bjoernsworld.de
25899 Dagebüll · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-de-help@httpd.apache.org