IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Multi connections en XML-RPC?


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut Multi connections en XML-RPC?
    Bonjour tout le monde.
    J'ai implémenté en PERL un serveur XML -RPC. J'ai l'impression que ce dernier traite les différentes requetes en série et non pas en parallèle. Malheureusement,j'ai beau chercher dans les différentes docs sur le net, je ne trouve pas de réponses claires et nettes. SI quelqu'un sait merci de me le poster.

    Merci d'avance,
    yanndan

  2. #2
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut
    Ton pc est dual-core ? ou p4 HT ? sans sa tu ne peut pas faire plusieurs opérations simultanément.

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut
    Pardon je me suis mal exprimé.
    Je souhaite faire un server XML RPC en perl qui peut recevoir des connections simultanées. Est ce que quel qu'un pourrait m'aider parce là je commence un peu à ne plus savoir trop quoi faire. J'ai utilisé le package RPC::XML::Server mais ce dernier ne crée pas de fils pour répondre aux requetes. du coup si j'enchaine les requetes un peu longue je perds un temps considérable. J'ai aussi esayé le module Apache::RPC::Server, mais ce dernier me sort une erreur bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't locate object method "server" via package "Apache" at /usr/lib/perl5/site_perl/5.8.0/Apache/RPC/Server.pm line 337.
    Si quelqu'un a des idées? Si on me dit que ce n'est pas possible, j'aimerais savoir comment il était possible de faire avec uin serveur qui gère les multiple connections parallèles.

    Merci d'avance,
    yanndan

  4. #4
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut
    On peut voir ton code ? Pense a regarder du côté des threads et de fork() aussi 8)

  5. #5
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut
    Bon on reprend depuis le début.
    Je cherche à faire un serveur XML RPC pouvant traité plusieur connections en simultané. J'utilise le package RPC::XML::Server.que j'utilise comme ci-dessous . Mais ce package ne propose pas de forker pour répondre aux clients.
    Si vous avez des idées pour faire un serveur XML RPC qui accepte les multiples connections,je suis preneur.

    Merci d'avance,
    yanndan

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    use strict;
    use RPC::XML;
    use RPC::XML::Server;
     
    sub createXmlRpcServer {
      my $port_number=shift();
      my $xpl_procedure_directory=shift();
     
     
      # create a new server that does load default methods (change tag to 1 to turn off default methods)
      my $srv=RPC::XML::Server->new(port => $port_number, no_default =>0, timeout =>600);
      # add every procedure from directory
      my $return_val=$srv->add_methods_in_dir("$xpl_procedure_directory")."\n";
      if (ref ($return_val) eq "RPC::XML::fault") {
        return "ERROR : RPC::XML code ".$return_val->value->{faultCode}.": ".$return_val->value->{faultString}."\n";
      }
      # start the service
      $srv->server_loop; # Never returns
    }

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    RPC::XML::Server peut tout à fait forker, il suffit d'utiliser Net::Server:Pre)Fork à la place de HTTP:aemon (qui est un serveur très basique). Pour faire ça, il suffit de le spécifier comme argument de server_loop avec "server_type => [qw(Fork Prefork)]" par exemple. (Et mettre no_http à 1 dans new())

    --
    Jedaï

  7. #7
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut
    Merci.
    J'essaie ça lundi et si ça marche niquel je passe le sujet en résolu.

  8. #8
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut
    Merci Maitre Jedai.
    Ca marche nickel. Je joins à ce petit mon code en espérant que ça pourran en aider d'autres. Derniere supposition, on peut modifier les parametres du serveur Net::Server::PreFork via les arguments passés dnas le server_loop, n'est ce pas.

    Merci encore tout le monde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    use strict;
    use RPC::XML;
    use RPC::XML::Server;
     
    sub createXmlRpcServer {
      my $port_number=shift();
      my $xpl_procedure_directory=shift();
     
     
      # create a new server that does load default methods (change tag to 1 to turn off default methods)
      my $srv=RPC::XML::Server->new(port => $port_number, no_default =>0, timeout =>600,  no_http    => 1 );
      # add every procedure from directory
      my $return_val=$srv->add_methods_in_dir("$xpl_procedure_directory")."\n";
      if (ref ($return_val) eq "RPC::XML::fault") {
        return "ERROR : RPC::XML code ".$return_val->value->{faultCode}.": ".$return_val->value->{faultString}."\n";
      }
      # start the service
      $srv->server_loop( server_type => qw(PreFork));  # Never returns
    }

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par yanndan
    Derniere supposition, on peut modifier les parametres du serveur Net::Server:reFork via les arguments passés dnas le server_loop, n'est ce pas.
    Tout à fait !

    --
    Jedaï

  10. #10
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 37
    Par défaut
    Pour info :
    Jedai m'a signalé que :
    min_servers est le nombre minimum de fork en train de tourner tandis que min_spare_servers est le nombre minimum de fork en train d'attendre un requête (donc inférieur ou égal au nombre de fork en train de tourner).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Choix] [Débutant] SOAP ou XML-RPC ?
    Par Noisette dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 15/01/2009, 17h31
  2. [SimpleXML] Comment exploiter le résultat d'une requête XML-RPC
    Par tiboel dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/02/2006, 19h57
  3. Perl, XML RPC et caractères spéciaux.
    Par yanndan dans le forum Modules
    Réponses: 4
    Dernier message: 14/02/2006, 11h36
  4. [XML] Utilisateurs connectés Lecture XML
    Par Polaire76 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/01/2006, 12h05
  5. [SOAP] [XML-RPC] la différence
    Par david42 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/03/2004, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo