Limitation connexions simultannées

Fermé
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 - 28 juil. 2011 à 10:58
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 - 29 juil. 2011 à 14:29
Bonjour à tous,

J'ai un petit problème sur une solution que je dois développer, et un petit coup de main ne serait pas de trop.

Je m'explique ...

J'ai une base utilisée par plusieurs applications.
Je dois rajouter une simple page web, permettant d'afficher certaines données de la base, sous la forme d'un rapport (genre BO).
Le problème c'est que les tables atteignent facilement plusieurs dizaines de millions d'enregistrements, et que pour ne pas impacter le traitement des autres applications, il faudrait que le nombre de connexions simultanées soit limité à 10.

Or je ne peux pas limiter les accès sur la base puisqu'il faut que les autres appli puissent y avoir accès à n'importe quel moment.

Donc j'aurai aimé savoir si, à votre avis, il serait possible de mettre en place un système de jeton par exemple, et de quelle manière je pourrais le mettre en place ?

Je vous remercie par avance.

Si vous avez des questions, n'hésitez pas.

6 réponses

apprendreEtSeDevelopper Messages postés 65 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 18 octobre 2013 6
Modifié par apprendreEtSeDevelopper le 28/07/2011 à 11:32
Bonjour, ton problème n'est pas simple !
Est-ce que tu peux dire sur quel type de bases tu travaille ?
0
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
28 juil. 2011 à 12:22
Bonjour.

Je travaille sur SybaseIQ.

Sinon je pensais à quelque chose d'assez moche, mais qui pourrait régler mon problème. Par exemple créer un fichier à l'ouverture de la connexion et supprimer le fichier à la fermeture.
Il suffirait ainsi de compter le nombre de fichier pour savoir combien de personnes sont connectés.
Mais encore une fois, c'est une solution très moche, et je pense qu'il doit être possible de faire d'une autre manière.

En tout cas je te remercie de prendre le temps de me répondre.
0
apprendreEtSeDevelopper Messages postés 65 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 18 octobre 2013 6
28 juil. 2011 à 12:41
Je t'en pris =)

1ère Solution (dure):
En faite moi j'aurais pensé à mettre en place une fils d'attente (je sais pas si tu connais, c'est une structure de données) en PHP.

2ème solution (moyen):
Tu fais une fils d'attente dans un fichier.
Tu mets en place 2 fichiers : les connectés, et les personnes qui attende leur connexion.
chaques lignes correspond à l'IP les personnes connectées ou qui attende.

Demande moi si tu veux plus de détails. Où si tu veux une autre méthode.
0
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
28 juil. 2011 à 14:34
Je pense que la première sera compliquée à mettre en place dans le sens où il faut que la file soit partagée entre différents postes.
En gros, même si ma page (probablement ASP) est la même, elle sera unique sur chaque pc.

Et je viens de penser pour ma solution, et pour la tienne, que si la personne ferme son navigateur, il va couper la connexion, sans passer par la suppression de la ligne correspondant à leur connexion. Donc si 10 personnes font ça, on va se retrouver avec 10 connexions utilisées alors qu'en réalité il n'y a plus personne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
apprendreEtSeDevelopper Messages postés 65 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 18 octobre 2013 6
Modifié par apprendreEtSeDevelopper le 28/07/2011 à 15:20
Oui mais pour la deuxième, c'est bon !!
En faite il faut tester toutes toutes les 2,5 ou 10 mins si l'utilisateur accède à la base, si il n'accède pas, alors on considère qu'il est inactif ou qu'il est parti (donc fichier on met IP et date).
Pour les fichiers, si tu les mets sur le serveur alors ils sont accessibles.
Tu peux aussi mettre les IP et DATE dans ta base!
0
MrSlave Messages postés 2587 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 26 août 2011 146
29 juil. 2011 à 14:29
Je pense que ça ne fonctionnera pas, parce que si l'utilisateur est en liste d'attente, la connexion n'est pas établie. Il n'y a donc aucune différence entre un utilisateur qui attend sa connexion et l'utilisateur qui a quitté la page qui envoie la requête.
J'aurai certes l'IP de l'utilisateur, mais je ne peux pas savoir si il est en train d'attendre le résultat de la requête qu'il vient d'envoyer ou pas.

La solution que j'ai retenue, est l'utilisation des variables d'application.
En effet, je vais développer en ASP qui s'exécute côté serveur. Et il existe des variables partagées par toutes les utilisateurs de l'application, à la différence des variables de session qui sont uniques par user.

Je te remercie pour ton coup de main.
0