Eviter un probleme dont je ne sais nommer [php/mysql] - PHP - Programmation
Marsh Posté le 27-08-2008 à 09:39:42
ce que je ferai :
declarer id comme un champ en autoincrement , dans une table de suivi , avec la structure : id, ip , ....
inserer des nouvelles lignes a chaque nouveau visiteur
utiliser mysql_insert_id() pour recuperer l'id généré
Marsh Posté le 27-08-2008 à 09:41:15
Je pense (mais je ne suis pas sur) qu'il y a peu de chances pour qu'un visiteur B se connecte pile poil entre le "select compteur from..." et le "update base set..." du visiteur A
Ou alors il est TRES vif
Marsh Posté le 27-08-2008 à 09:43:19
Avec Oracle on peut locker un enregistrement avec SELECT FOR UPDATE. Je ne sais pas si ça existe aussi avec MySQL.
Marsh Posté le 27-08-2008 à 10:33:12
flo850 a écrit : ce que je ferai : |
Ca devrais le faire ! Merci
Marsh Posté le 27-08-2008 à 12:39:27
User un fichier texte ? .. sur lequel tu écris ta variable de visiteurs
ou mieux, toucher ce fichier de ton nombre de visiteurs ( peux etre utile pour placer un curseur de lecture dans un gros fichier )
Marsh Posté le 27-08-2008 à 12:51:36
non, c'est vraiment pas une bonne idée les accès concurrent a un fichier
Marsh Posté le 27-08-2008 à 08:40:38
Salut,
etant donné que je me vois mal expliquer mon souci avec des mots clairs, j'essaye de faire un exemple tout con,
ci dessous un code qui poserait le probleme:
Le probleme que j'imagine, c'est si deux types se connectent en meme temps, ils auront tous les deux le messages... alors que seul le 1000eme visiteur aura droit au super "yoohoo dla ballz" !
Je vois les etapes du probleme comme ci dessous
en rouge la session du visiteur 1, en bleu la session du visiteur 2:
-Visiteur 1 se connecte
-$compteur=(select compteur from base)
-Visiteur 2 se connecte
-$compteur=(select compteur from base)
-Update base SET compteur=compteur+1
-Update base SET compteur=compteur+1
-Si $compteur=1000 alors afficher yoohoo supair dla balle!
-Si $compteur=1000 alors afficher yoohoo supair dla balle!
En fait le visiteur 2 s'intercale au moment ou le compteur va etre incrementé par la session du visiteur 1.
Comment on peut eviter ca ?
Message édité par Profil supprimé le 27-08-2008 à 08:54:49