Actualiser le texte d'un fichier *.txt

Résolu
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 27 déc. 2006 à 18:02
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 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

4 réponses

amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
27 déc. 2006 à 18:58
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 !!!";
}
?>
3
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
27 déc. 2006 à 18:40
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
0
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
27 déc. 2006 à 18:42
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);
}
?>
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
28 déc. 2006 à 08:59
merci a toi amezghal !
joyeux noel et bonne anne ;-)
0