Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1695 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php/mysql] Eviter un probleme dont je ne sais nommer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php/mysql] Eviter un probleme dont je ne sais nommer

n°1778111
Profil sup​primé
Posté le 27-08-2008 à 08:40:38  answer
 

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:
 
 

Code :
  1. <?//connection d'un visiteur
  2. //recuperation du compteur de visite
  3. $compteur=(SELECT compteur FROM base)
  4. //Incremente compteur de visite
  5. UPDATE base SET compteur=compteur +1
  6. //Si $compteur==1000 affiche yoohoo dla ballz
  7. if ($compteur==1000)
  8. echo "Dla Ballzz mec !";
  9. ?>


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
mood
Publicité
Posté le 27-08-2008 à 08:40:38  profilanswer
 

n°1778130
flo850
moi je
Posté le 27-08-2008 à 09:39:42  profilanswer
 

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é

n°1778131
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 27-08-2008 à 09:41:15  profilanswer
 

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


Message édité par Marty_McFly le 27-08-2008 à 09:42:15

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1778134
olivthill
Posté le 27-08-2008 à 09:43:19  profilanswer
 

Avec Oracle on peut locker un enregistrement avec SELECT FOR UPDATE. Je ne sais pas si ça existe aussi avec MySQL.

n°1778156
Profil sup​primé
Posté le 27-08-2008 à 10:33:12  answer
 

flo850 a écrit :

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é


Ca devrais le faire ! Merci

n°1778229
grosbin
OR die;
Posté le 27-08-2008 à 12:39:27  profilanswer
 

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 ) :D


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1778233
flo850
moi je
Posté le 27-08-2008 à 12:51:36  profilanswer
 

non, c'est vraiment pas une bonne idée les accès concurrent a un fichier


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php/mysql] Eviter un probleme dont je ne sais nommer

 

Sujets relatifs
SSAS - Problème avec des conversions de durées[Résolu][VBA-Excel]Problème d'affichage de feuille
Problème avec windev et SQLProblème sur IE mais pas sur Firefox
problème de debugageTreeview et javascript
Problème de superposition de texte sur imageproblème de AND et OR dans mon select
Stocker fichier / bdd mysql et Traffic/Charge serveurProblème .h
Plus de sujets relatifs à : [php/mysql] Eviter un probleme dont je ne sais nommer


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR