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

avec Java Discussion :

Comportement de file d'attente


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut Comportement de file d'attente
    Hello

    Voila, j'ai un exécutable java .jar. Celui-ci ne sert qu'à faire un certain traitement (un calcul plutôt complexe). Il prend 4 paramètres en entré et me retourne une string xml en sortie.

    Actuellement, il est déclenché par une commande "exec" de php.

    Le soucis avec ça, c'est qu'il risque d'y avoir engorgement si trop d'appels simultanés...

    J'ai donc décidé de créer une sorte de queue: au lieu de faire un exec à chaque fois directement, les 4 paramètres seront insérés dans un enregistrement d'une table de ma base données par le php, au fur et à mesure. Le java lui de son coté, s'occupe de détecté si il y a au moins un enregistrement dans la table. Si oui, il le prend, fait son traitement et le supprime une fois qu'il a terminé. Si il n'y a plus aucun enregistrement, alors il se met en attente du prochain.

    Ma question repose sur ce dernier point: comment mettre en attente mon exécutable et le "réveillé" lorsqu'un nouvel enregistrement est inséré dans la base ?

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    rigolo: on m'a déjà posé un problème analogue .... et le résultat a multiplié les performances par 1000!
    pourquoi ne pas faire communiquer php et Java au travers d'un flot de communication (une socket par exemple): php "pousse" et Java lit ses requêtes et renvoie un résultat.

  3. #3
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour,
    pour faire cela, je te conseille de lancer ton exécutable Java une fois, ce serait simplement l'équivalent deMaintenant le plus important, c'est qu'il faudrait que dans ta méthode main(), tu lances une méthode qui prend 4 arguments via un Thread ou Runnable ou en utilisant l'api java.util.concurrent. Ainsi, le thread lancé vérifierait continuellement ta base de données et effectuerait le traitement que tu compte faire.
    En somme, ton script php ne lancerait qu'une seule fois ton .jar et c'est le jar qui tournerait tout seul en "mode thread". Et ton script php peut ajouter autant de données qui veut dans la BD (ou pas).
    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par paissad Voir le message
    . Ainsi, le thread lancé vérifierait continuellement ta base de données et effectuerait le traitement que tu compte faire.
    ,
    euh ... je conseille pas: ce genre de "polling" est contraire à ma religion

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut
    Merci pour vos réponses

    Alors :
    1 - Professeur Shadoko, je ne comprends pas bien l’intérêt d'utiliser des sockets ? Car si je pousse de PHP vers Java dès que j'ai une demande, j'arriverai au même problème d'engorgement, car du coup, les sollicitations du java ne sont toujours pas contrôlées, Non ? Ou alors j'ai pas bien compris (fort possible )
    2 - Paissad, ta solution me semble intéressante mais du coup, si mon jar est déjà un thread, pourquoi en créer un autre ? Autant le rendre juste "waitable", Non ? (là encore je suis peut-être hs, mais je n'ai pratiquement jamais utilisé les threads... )

    Merci de votre aide !!

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par benthebest Voir le message
    1 - Professeur Shadoko, je ne comprends pas bien l’intérêt d'utiliser des sockets ? Car si je pousse de PHP vers Java dès que j'ai une demande, j'arriverai au même problème d'engorgement, car du coup, les sollicitations du java ne sont toujours pas contrôlées, Non ? Ou alors j'ai pas bien compris (fort possible )
    !
    L'important c'est la dose: si tu as un processus "serveur " java permanent il sera à l'écoute de multiples requêtes. Une fois démarré si tu arrives à l'étouffer c'est que tu balance des requêtes à une vitesse stratosphérique.
    ça peut arriver mais ça m'étonnerai beaucoup ...
    Le code java lit un requête sur la socket l'execute, etc. (eventuellement en multiThread mais c'est peut-être pas nécessaire: sinon voir ExecutorService). Comme je te l'ai dit j'ai fait réaliser un code analogue dans une société et les perfs ont été taradzimboumbantes.
    est-ce que l'engorgement est possible? oui ... mais alors un buffer de stockage des requêtes en attente est possible (toujours avec java.util.concurrent), est ce que ça ne peut pas atteindre une limite de bufferisation ? oui mais alors je demande à voir .... et il y aura toujours une solution producteur/consommateur préférable à un polling sur la base.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut
    ta réponse est intéressante

    Tu peux donc me garantir que si j'ai 1000 demandes simultanées, il n'y aura pas de soucis ? (à mon avis, je serais qd même contraint d'utiliser un buffer de stockage ...)

Discussions similaires

  1. Gestion de files d'attente
    Par bounnitcharaf dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/09/2006, 18h34
  2. [Tableaux] créer une file d'attente en php
    Par gaetan.tranvouez dans le forum Langage
    Réponses: 12
    Dernier message: 01/06/2006, 18h49
  3. Mes emails restent en file d'attente sur mon serveur
    Par FredericB dans le forum Réseau
    Réponses: 3
    Dernier message: 26/10/2005, 10h04
  4. Gestion d'une file d'attente
    Par jesus144 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 22/09/2005, 19h58
  5. recupèrer file d'attente d'impression
    Par magic corp. dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2002, 14h12

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