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

Langage PHP Discussion :

Limiter l'envoi de requêtes coté client


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut Limiter l'envoi de requêtes coté client
    Bonjour,

    Voilà tout est dans le titre, donc pour préciser j'ai une appli cliente qui envois des requêtes à un serveur. Seulement je ne peux envoyer que 2 requêtes simultanément (sachant qu'elles peuvent être envoyé de plusieurs pc différents).
    J'ai pensé à un "repère" dans un fichier ou une base avec un calcul par la suite du temps entre la requête actuelle et la deuxième (lorsqu'on est à 2 requêtes), pour faire une tempo.

    Si quelqu'un à une idée d'algo? Et quelle serait la meilleur solution?

    Merci

  2. #2
    Membre actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Points : 222
    Points
    222
    Par défaut
    Je sais pas si ça existe en PHP, mais le principe des sémaphores peut t'apporter une solution.
    C'est en forgeant que l'on devient forgeron et c'est en sciant que Leonard de Vinci ...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Bonjour,
    Permettez moi de reformuler!
    Vous avez des applications clientes sur plusieurs PC qui envoient des requêtes à un serveur.
    Vous voulez limiter le nombre de requêtes simultanées expédié par
    1. chaque client,
    2. l'ensemble des clients

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    oui je connais les sémaphores en C mais je vois pas de rapport direct pour cet exemple (à creuser).

    Citation Envoyé par wiztricks
    Vous voulez limiter le nombre de requêtes simultanées expédié par

    1. chaque client,
    2. l'ensemble des clients
    En fait il s'agit d'un ensemble de client qui interroge un webservice. Comme ce serveur est sollicité par d'autres appli et qu'il regroupe plusieurs webservice, je dois contrôle coté client, donc limité l'envois pour l'ensemble des clients . L'appli en developpement est centralisée (j'aurais dû le préciser dans le post précédent)

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    2 solutions.

    jeton : le client attend d'avoir reçu un jeton du serveur avant d'expédier sa requête.
    => si le client ne soumet pas de requête, comment le serveur regénère le jeton?

    famine : le serveur ne traite simultanément qu'au plus deux requêtes, les autres requêtes client "attendent" - et les clients soumettent les requêtes suivantes après avoir reçu la réponse à la requête en cours.

    Il est en général plus simple de limiter la capacité de traitement côté serveur que de faire fonctionner un algorithme distribué (beaucoup de tests à faire pour couvrir tous les cas de figures).
    Mais "comment" dépend beaucoup de l'architecture de votre serveur.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    la méthode du jeton n'est pas envisageable parceque je n'ai pas accès au serveur. Pareil pour la "famine", le serveur à sûrement une gestion de ce type mais de toute facon je dois respecter le cahier des charges.

    C'est pour ca que j'avais commencé par inscrire dans un fichier les chiffres 1 et 2 pour le nombre de requêtes. A chaque requête j'allais lire le chiffre et j'envoyais ou non ma requête. Par contre fonctionnellement c'est pas super donc je m'oriente vers le javascript pour indiquer une tempo.
    Cette solution me parait tout de même bancale parceque j'imaginais aussi faire une comparaison sur les heures, minutes, secondes où sont exécutés les requêtes, parcequ'au final le principe il est là: surcharge coté serveur.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Galère votre truc.

    C'est pour ca que j'avais commencé par inscrire dans un fichier les chiffres 1 et 2 pour le nombre de requêtes. A chaque requête j'allais lire le chiffre et j'envoyais ou non ma requête. Par contre fonctionnellement c'est pas super donc je m'oriente vers le javascript pour indiquer une tempo.
    Est ce que cela signifie que l'on peut contrôler le nombre de requêtes faites par un client?
    Est ce que le nombre de clients est fixe?
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par wiztricks
    Est ce que cela signifie que l'on peut contrôler le nombre de requêtes faites par un client?
    C'est un point qu'il faudra que je vois avec mon chef de projet quand il sera de retour^^. Mais je pense qu'il faut contrôler le nombre de requêtes globalement envoyés au serveur. Pas de filtrage par poste donc.
    Concernant le nombre de client je le connais pas.

  9. #9
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    est-ce que tu peux préciser quelles types de requêtes ? est-ce que le client a besoin de savoir si sa requête a été effectuée directement ou non ?
    Sans la main sur le serveur ca semble effectivement un peu compliqué.
    Une solution serait de mettre en place une petite appli sur un autre serveur qui gère des pools de requêtes et que ce soit elle qui communique avec le serveur de données (encore faut-il qu'il accepte les connexions extérieures).
    Y a ptêtre aussi moyen de mettre en oeuvre un pool dans des fichiers ou dans une bdd et d'appeler un script à partir d'une tâche cron si le serveur le permet. Si tu enregistres l'id de session du client en plus de la requête, tu peux lui mettre un message comme quoi il reste des requêtes à lui dans la bdd.
    Sur certain sgbd tu peux récupérer le nombre de connexions je crois, tu pourrais donc aussi envoyer directement un message au client pour lui dire que le système est occupé et lui dire d'essayer ultérieurement.

    C'est juste des idées y a ptetre plus simple...
    Vive les roues en pierre

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 64
    Points
    64
    Par défaut
    Il s'agit d'un service web et comme l'appli cliente est en php j'ai décidé d'utiliser SOAP.

    Citation Envoyé par Djakisback
    Si tu enregistres l'id de session du client en plus de la requête, tu peux lui mettre un message comme quoi il reste des requêtes à lui dans la bdd.
    Je compte pas checker chaque client.

    Citation Envoyé par Djakisback
    Sur certain sgbd tu peux récupérer le nombre de connexions je crois, tu pourrais donc aussi envoyer directement un message au client pour lui dire que le système est occupé et lui dire d'essayer ultérieurement.
    Là faut voir, ca semble pas trop mal. Je chercherai de ce coté en attendant d'autres idées. merci


    edit: je suis peut etre pas très clair donc si je me répète et bien c pas grave^^. Donc mon but s'est de limité l'envoie de requête au webservice, avec un controle depuis l'appli web coté client.

    edit solus:

    Bon je vais résumer.
    J'ai utilisé une bdd finalement, avec une table qui enregistre les la requêtes envoyées et place un champs "etat" à 1 pendant l'envois.
    Au retour je stock le résultat (ds la mm table) et je passe le champs "etat" à 0.
    Donc avant chaque envois de requête je consulte la table et compte le nombre d'état à 1: si inférieur à n je peux envoyer sinon j'alerte l'utilisateur d'une manière quelconque.
    Si il y a eu un problème du programme (mais qu'il est toujours "utilisable") et que la reponse n'a pas pu nous être parvenue et bien je replace le champs etat à 0.
    Si la requête et le resultat sont présent en base et bien il est inutile d'aller réinterroger le serveur.

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

Discussions similaires

  1. Assets 404 coté client, aucune requête reçue coté serveur
    Par Iradrille dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/08/2013, 01h35
  2. ouvrir un fichier excel coté client
    Par youss dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/07/2005, 14h42
  3. [Indy] Intercepter les messages coté client
    Par PpPool dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2005, 10h19
  4. Envoi fichier pdf au client
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 3
    Dernier message: 01/06/2005, 12h00
  5. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13

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