bonjour,
voici mon souci, dans mon programme, on peut ouvrir un projet faisont partie d'une liste de projets stockés sous formes de tuples dans une base de données. Il est impératif que chacun des projets ne puisse etre ouvert que par un utilisateur a la fois.
Voici comment je fais : j'ai un booleén "in_use" dans la table "project" de la base de données. a l'ouverture d'un projet je sette ce booléen à "vrai" (notez déjà que ce n'est pas infaillible, admettons que deux c**** ouvrent le même projet pile en même temps), et a la fermeture du projet (ou du programme si il n'y a pas de sauvegarde) je sette c booléen a faux.
si quelq'un veut ouvrir le projet, on regarde si le booléen est a vrai, si c'est le cas, on interdit l'ouverture du projet.
le problème, qui est un peu le même que lors d'un précédent post qui voulait interdire le lancment de plusierus instances d'un programmepar l'utilisation d'un fichier, c'est qu'en cas de plantage (ou meme de coupure volontaire sèche du programme avec le carré rouge d'éclipse ou meme par le gestionnaire de programmes), le booleen en question reste a vrai dans la base et le projet ne peut plus s'ouvrir!
la solution consite alors a faire la super requete :
il serait meme possible de l'inclure dans le prog avec un boutton mais c'est particulièrement crade car qui prouve que le projet est effectivement inutilisé.? et qui va appuyer sur ce bouton hein?
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE project SET in_use = 0 WHERE 1;
Le projet etant destiné a etre utilisé dans un environnement a relativement petite echelle, je pensais faire un systeme qui detecte le nombre de connection a la base (car il n'y a qu'une base et plusieurs postes). si ce nombre vaut 1, c'est que je suis le seul connecté et dans ce cas le prog effectue de lui mem la requete ce qui est a la fois sur et a peu pres couvrant tous les cas. (sauf le cas ou il n'y a jamais moins de 2 gus conectés mais c'est quand meme peu probable que 5 jours de suite tous les mecs eteignent le prog a la meme heure)
Maintenant que j'ai exposé le problème, j'aimerai savoir comment faire pour connaitre le nombre de connections a une base de donnée (distante), dans mon cas c'est une mySQL. (mais ca peut changer en prime )
A moins que quelq'un voie une autre technique pour contourner le problème que je viens d'exposer.
Merci de vos réponses (nombreuses comme d'habitude )[/code]
Partager