[Dresden-pm] HTTP::Deamon forken lassen

Jens Puruckherr jpuruckherr at cyberport.de
Mit Jun 9 04:23:00 CDT 2004


Hallo,

meine XML-Anwendung läuft prima, hat aber einen Haken:

Wenn gleichzeitig viele Requests ankommen, dauert die Bearbeitung
ewig, denn durch die SOAP-Schnittstelle passt immer nur ein einziger
Request:
Ich nutzer SOAP::Transport:.HTTP::Deamon für meinen Soapserver und
der kann bekanntlich nicht forken. Aus man HTTP::Deamon:

     This HTTP daemon does not fork(2) for you.  Your application,
i.e. the user of the "HTTP::Daemon" is reponsible for forking if that
is desirable.
       Also note that the user is responsible for generating
responses that conform to the HTTP/1.1 protocol.

Kein Problem, wenn ich dafpr zuständig bin, mache ich das doch auch.
Aber bloss wie?
Hier mal mein vorhander Code vom Server:

----------------
#!/usr/bin/perl
use strict;
use warnings;
use SOAP::Transport::HTTP;
my $daemon =  SOAP::Transport::HTTP::Daemon
                -> new( LocalAddr => 'localhost',
                                  LocalPort => 8081,
                                  ReuseAddr => 1,
                                  Listen    => 5 )
                -> 
dispatch_to('Shop::Interface::(?:ping|setArtikel|setXsell|setKunde|getArtKat|setBestand)')
                ;
$daemon->handle;
--------------

Nach meiner Vorstellung soll nun ein ankommender Request einen Child
erzeugen, während der Vater einfach den nächsten Request annimmt,
wieder einen child erzeugt, etc. Bis zu einer Max. Grenze, dann
müssen die Requests hat wirklich warten.

Ich weiss, ich könnte auf Apache::Soap umsteigen, das bedeutet jedoch
einen Batzen Installation und evaluierung, darum will ich es erst mal
auf diese Weise versuchen ... und noch was lernen. Kann mir jemand
einen Tipp geben?



   Mit freundlichen Grüßen

Jens Puruckherr