Actualiser le texte d'un fichier *.txt [Résolu]

alonsyl 348 Messages postés mardi 6 avril 2004Date d'inscription 6 novembre 2008 Dernière intervention - 27 déc. 2006 à 18:02 - Dernière réponse : alonsyl 348 Messages postés mardi 6 avril 2004Date d'inscription 6 novembre 2008 Dernière intervention
- 28 déc. 2006 à 08:59
bonjour,


 


je cherche a afficher un compteur afin de connaitre le nombre de connexions a mon site web sans passer par un enregistrement dans mysql.
en fait, je n'utilise pas de bases de donnees pour l'administration de ce site et je n'ai pas envie d'en creer une specialement pour cette histoire de compteur.




voici la technique que j'utilise actuellement :


1) j'ouvre le fichier 'compteur.txt' qui est stocke a la racine de mon site
2) je mets en memoire le nombre qui est inscrit a l'interieur
3) je detruit 'compteur.txt'
4) j'affiche le nombre de connexions que j'avais stocke en memoire a l'etape 2)
5) je cree un nouveau fichier 'compteur.txt'
6) j'enregistre dans 'compteur.txt' le nombre de connexions incremente de 1




voila ce que donne le code :


<?
if (file_exists("compteur.txt")) {
//debut
 $fichierCpteur = fopen("compteur.txt", "r"); //etape 1)
 $numVisiteur = fgets($fichierCpteur, 4096); //etape 2)
 fclose($fichierCpteur);
 unlink("compteur.txt"); //etape 3)
 for ($i = 0; $i < strlen($numVisiteur); $i++)
  echo ""; //etape 4)
 $fichierCpteur = fopen("compteur.txt", "w+"); //etape 5)
 fputs($fichierCpteur, ++$numVisiteur); //etape 6)
 fclose($fichierCpteur);
//fin
}
?>




mes questions sont les suivantes :


1) comment realiser la meme operation sans avoir a detruire puis recreer le fichier 'compteur.txt' ?
en realite, lorsque je recupere un fichier avec le texte '199' je ne sais pas le modifier pour y ecrire '200'. pour cela, je suis oblige de detruire celui ou est inscrit '199' et d'en recreer un nouveau contenant '200'.
pour ma part, je sais ecrire du texte a la suite de celui qui est deja inscrit dans mon fichier par l'intermediaire de la fonction "fputs($fichierCpteur, 'nelleSaisie');" qui renvoit '199nelleSaisie' mais en revanche, je ne sais pas remplacer '199' par '200' dans mon fichier initial (sans avoir a le supprimer).


2) d'autre part, lorsque je joue les utilisateurs pertubateurs et que j'actualise la page tres frequemment et a cadence tres elevee, il arrive que 'compteur.txt' soit detruit (unlink("compteur.txt");) mais pas recreer (fopen("compteur.txt", "w+");). je suppose que cela se produit lorsque l'actualisation est lancee entre les deux instructions.
le compteur est alors inactive et le nombre de connexions est perdu !
auriez-vous une solution pour pallier ce probleme ?




merci a vous,


 


alonsyl
Afficher la suite 

4 réponses

Répondre au sujet
amezghal 386 Messages postés lundi 27 février 2006Date d'inscription 21 août 2015 Dernière intervention - 27 déc. 2006 à 18:58
+3
Utile
voici une version testé:



<?php
$count_file="data.txt";
if(file_exists($count_file))
{
$fp=fopen($count_file,"r+");
$count=fread($fp,filesize($count_file));
$count ++;
fseek($fp,0);
fputs($fp,$count);
fclose($fp);
echo "le nombre de visiteurs est :".$count;
}
else
{
echo "erreur interne !!!";
}
?>
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de amezghal
amezghal 386 Messages postés lundi 27 février 2006Date d'inscription 21 août 2015 Dernière intervention - 27 déc. 2006 à 18:40
0
Utile
salut
voici une methode
<?php
$count_file="data.txt";
if(file_exists($coun_file))
{
$fp=fopen($count_file,"r+");
$count=fget($fp,filesize($count_file));
$count ++;
fseek($fp,0);
fputs($fp,0);
fclose($fp);
}
?>
bonne prog
Commenter la réponse de amezghal
amezghal 386 Messages postés lundi 27 février 2006Date d'inscription 21 août 2015 Dernière intervention - 27 déc. 2006 à 18:42
0
Utile
oups ya eu des erreurs desolé
voici encore
<?php
$count_file="data.txt";
if(file_exists($count_file))
{
$fp=fopen($count_file,"r+");
$count=fget($fp,filesize($count_file));
$count ++;
fseek($fp,0);
fputs($fp,$count);
fclose($fp);
}
?>
Commenter la réponse de amezghal
alonsyl 348 Messages postés mardi 6 avril 2004Date d'inscription 6 novembre 2008 Dernière intervention - 28 déc. 2006 à 08:59
0
Utile
merci a toi amezghal !
joyeux noel et bonne anne ;-)
Commenter la réponse de alonsyl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.