Bonjour,
Je cherche à faire un "match-making" simple pour une application Java permettant donc de mettre en relation 2 joueurs qui auront cliqué sur le "play" de leurs applications respectives.
J'ai côté serveur du PHP et MySQL, et donc je passe par des requêtes HTTP simple contenant les paramètres (type ID du joueur).
Donc côté serveur je reçois la requête de mise en attente, j'enregistre le joueur dans une table des mises en attentes, et si un autre se connecte, il pioche dans cette table le joueur adéquat.
Mon soucis est que si 2 joueurs lancent dans un laps de temps assez court la recherche, ils vont se retrouver tous les 2 en attente. Et quoi je je fasse, s'ils sont dans le même timing, ils peuvent continuer à faire la même action au même moment, empêchant qu'ils se trouvent l'un l'autre, ou si un 3ème est dans la boucle, ça pose encore d'autres problèmes de synchronisation etc...
Donc je recherche un algorithme "simple" permettant cette mise en relation sachant que je suis bloqué avec une architecture dont le serveur est un serveur web PHP sur MySQL, donc pas de possibilité d'avoir un vrai programme "serveur" qui gérerait ça comme un grand.
Evidemment si je locke les tables impliquées, je résous le problème, je pense, mais l'idée de locker les tables ne semble pas idéale, en particulier en terme de performances à terme.
J'ai pas mal cherché mais je ne trouve pas de solution sur le net, j'imagine que mon architecture est loin d'être idéale pour ce problème mais je développe un petit truc, je ne peux pas vraiment faire autrement.
Je me trompe aussi peut-être dans les termes, match-making n'est peut-être pas ce qu'il faut chercher.
Enfin, désolé si c'est la mauvaise catégorie, merci de me l'indiquer le cas échéant.
Merci de votre aide.
Partager