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

Messages postés
348
Date d'inscription
mardi 6 avril 2004
Dernière intervention
6 novembre 2008
- 27 déc. 2006 à 18:02 - Dernière réponse :
Messages postés
348
Date d'inscription
mardi 6 avril 2004
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
386
Date d'inscription
lundi 27 février 2006
Dernière intervention
21 août 2015
- 27 déc. 2006 à 18:58
3
Merci
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 !!!";
}
?>

Merci amezghal 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de amezghal
Messages postés
386
Date d'inscription
lundi 27 février 2006
Dernière intervention
21 août 2015
- 27 déc. 2006 à 18:40
0
Merci
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
Messages postés
386
Date d'inscription
lundi 27 février 2006
Dernière intervention
21 août 2015
- 27 déc. 2006 à 18:42
0
Merci
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
Messages postés
348
Date d'inscription
mardi 6 avril 2004
Dernière intervention
6 novembre 2008
- 28 déc. 2006 à 08:59
0
Merci
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.