Bonjour,
J'aimerai qu'un client puisse lancer une requête par SOAP sur un serveur
perl utilisant SOAP::Lite.
Le problème est que la tache demandée prend beaucoup de temps d'ou l'idée de
lancer la chose en tache de fond en faisant un fork dans la "sub" concernée.
mais visiblement les PID enfants ne meurrent pas !
Voici un bout de progamme pour illustrer la chose:
#--#
#!/usr/bin/perl -w
use strict;
use SOAP::Transport::HTTP;
my $daemon = SOAP::Transport::HTTP::Daemon
-> new (LocalPort => 8989)
-> dispatch_to('Test')
;
print "Contact to SOAP server at ", $daemon->url, "";
$daemon->handle;
package Test;
sub toto {
if ( fork() ) {
# ici, c'est le process parent
return 'ok';
} else {
# Simule un long traitement
sleep 10;
return 1;
}
}
1;
#--#
et le client pour tester:
#--#
#!/usr/bin/perl -w
use SOAP::Lite;
print SOAP::Lite
-> uri('
http://localhost/Test')
-> proxy('
http://localhost:8989')
-> toto()
-> result . "";
#--#
Merci pour votre aide !
Nicolas