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

  FORUM HardWare.fr
  Programmation
  PHP

  Divergence de compteur entre fichier et BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Divergence de compteur entre fichier et BDD

n°1692968
Galdon
Posté le 26-02-2008 à 18:17:06  profilanswer
 

Bonjour, j’ai un script inclus dans mes pages qui compte le nombre de pages vues. Ce compteur est incrémenté à chaque chargement (à condition qu’un cookie ne soit pas défini sur la machine, ca me sert à m’exclure des stats). La valeur du compteur est stockée dans un fichier compteur.txt.
 
Comme j’aurais vite fait de supprimer ce fichier sans faire exprès du ftp, j’ai mis en place une sauvegarde de sécurité dans une base de données mysql, et il se trouve que la valeur contenue dans le fichier et celle contenue dans la base ne sont pas identiques. Au moment où j’écris ca par exemple, dans le fichier indique 12675 tandis que la base indique 12678.
 
Je ne comprends pas d’où vient cette divergence, voici le code :

Code :
  1. <?php
  2. function cpt_vues(){
  3. // on créé un fichier compteur.txt s'il existe po
  4. if(!file_exists("etc/compteur/compteur.txt" )){
  5.  $fichier = fopen("etc/compteur/compteur.txt","w+" );
  6.  fclose($fichier);
  7. }
  8. // on incrémente le compteur de 1 dans le fichier compteur.txt
  9. $fichier = fopen("etc/compteur/compteur.txt","r+" );
  10. $cpt = fgets($fichier,12)+1;
  11. fseek($fichier,0);
  12. fputs($fichier,$cpt);
  13. fclose($fichier);
  14. //on incrémente aussi le compteur de sécurité dans la base de données
  15. @mysql_query("UPDATE minidata SET valeur = valeur+1 WHERE nom='compteur_vues'" ) or die (mysql_error());
  16. return join('',file("etc/compteur/compteur.txt" ));
  17. }
  18. //si le cookie est défini, alors on se contente d'afficher le nombre de pages vues
  19. if(!compter_stats()){
  20. echo join('',file("etc/compteur/compteur.txt" )).' - <font color="red">stats perso off</font>';
  21. }
  22. //sinon, on met à jour le compteur et on affiche le nombre de pages vues
  23. else
  24. echo cpt_vues();
  25. ?>


Merci de m’éclairer sur cette sombre affaire.


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
mood
Publicité
Posté le 26-02-2008 à 18:17:06  profilanswer
 

n°1693663
Galdon
Posté le 27-02-2008 à 15:26:27  profilanswer
 

Bon j'ai trouvé (enfin un membre d'un autre forum) l'origine du problème : apache et donc php exécutent les requêtes en parallèle.
Ainsi si 2 requêtes surviennent presque en même temps (à 10-20 ms d'intervalle) le compteur n'est incrémenté que de 1.


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
n°1693687
matrixise
Posté le 27-02-2008 à 15:59:47  profilanswer
 

bienvenue dans les accès concurrentiels. Tu devrais tout placer dans ta base de données, elle faite pour cela.


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

  Divergence de compteur entre fichier et BDD

 

Sujets relatifs
[javascript] Reload d'un div de fichier phpJoindre un certificat numérique à un fichier d'instal
Convertir un fichier .txt en ".iges" ou ".step" ou ".dxf"Problème sur mon site, impossible de télécharger un fichier
Comment faire un fichier de fonctionSauvegarder et charger des objets dans un fichier.
Sélectionner une colonne de données à partir d'un fichier TXTlecture de fichier
Lire un fichier .txtRecherche de fichier
Plus de sujets relatifs à : Divergence de compteur entre fichier et BDD


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