PHP - Vider un fichier texte par PHP tous les 24 heure ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

Foxus
WRInaute accro
WRInaute accro
 
Messages: 1404
Inscription: Dim Jan 09, 2005 21:21

PHP - Vider un fichier texte par PHP tous les 24 heure ?

Message le Jeu Aoû 25, 2005 20:54

salut

j'ai fait des prouesse sur l'ecriture dans les fichier textes par php, je suis etonné moi meme :)

Cependant pour completer ceci je doit vider le fichier texte tous les jours (24 heure)

comment puis-je proceder ?

j'ai penser a une methode assez usine a gaz qui ne marche pas des masse :

metre un autre fichier texte nomé date avec la date du jours, et a chaque connection de visiteur sur le site ca compare la date actuelle a la date du fichier texte, et si elle son differente ca efface l'autre ficheir texte (qui contien les ip des visiteurs, nommé ip.txt) et ca marque la nouvelle date dans le fichier date.txt a la place, etc...

Code: Tout sélectionner

$fdate=fopen("date.txt", "r+");

$contenue_date = fgets ($fdate, 6555);

// ------ Comparaison de la date du fichier et la date actuelle

$datenow = $date=formatdate(time()); // format date est uen fonction perso quie affiche la date au format 25 08 2005 par exemple.

$posdate2 = strpos($contenu_date,$datenow); // ca compare la date du fichier texte a celle actuelle

if ($posdate2 === false) {
echo '<br> dates differentes : mise a jour de la date';

fseek ($fdate, 0);
fputs ($fdate, $datenow);
} else {

echo '<br> les dates son pareils : rien a changer';

}


seulement voila ca tombe TOUJOURS sur "dates differentes : mise a jour de la date" (et ca la met bien a jour) et jamais sur "les dates son pareils : rien a changer" meme quan c'est le cas et exactement pareil aux chiffre pret malgrés tous.

peut etre existe t'il une autre soluction pour cela ? merci


CaYuS
WRInaute passionné
WRInaute passionné
 
Messages: 601
Inscription: Jeu Juil 14, 2005 7:25

Message le Jeu Aoû 25, 2005 21:19

Bonsoir,

Peut être que je tape à côté de la plaque mais ... pourquoi ne pas faire ainsi :

<?php

if ( date("d m Y", filemtime("ip.txt")) != date("d m Y") )
{
unlink("ip.txt");
echo '<br> dates differentes : suppression de l'ancien fichier';
}
else
{
echo '<br> les dates son pareils : rien a changer';
}

?>


Tu compares la date de dernière modification de ton fichier ip à la date actuelle, si c'est la même tu fais rien, si elle est différente, tu supprimes le fichier ip.txt
Ensuite il te reste plus qu'à ouvrir ton fichier ip.txt en mode écriture, ce qui va le re-créer si inexistant ... non ?
Dernière édition par CaYuS le Jeu Aoû 25, 2005 21:21, édité 2 fois.


Borower
WRInaute accro
WRInaute accro
 
Messages: 2151
Inscription: Lun Avr 18, 2005 20:58

Message le Jeu Aoû 25, 2005 21:21

Pourquoi tu ne supprimerai pas le fichier toutes les 24 h et tu en fais un nouveau?
Je sais pas si j'ai bien compris ce que tu voulais faire.
Il te sert a quoi ce fichier texte?


TOMHTML
WRInaute accro
WRInaute accro
 
Messages: 3243
Inscription: Mer Aoû 25, 2004 14:05

Message le Jeu Aoû 25, 2005 21:28

Pour effacer le contenu d'un fichier : ftruncate($monfichier,0)


rottman
WRInaute accro
WRInaute accro
 
Messages: 2097
Inscription: Mar Jan 06, 2004 20:11

Message le Jeu Aoû 25, 2005 21:46

Tu fais une tache CRON programmée toutes les 24h :
Code: Tout sélectionner
php /delete.php



delete.php :
Code: Tout sélectionner
<?php ftruncate("fichier.txt",0);?>

/* jerome */
Nouveau WRInaute
 
Messages: 18
Inscription: Mar Aoû 23, 2005 12:56

Message le Jeu Aoû 25, 2005 21:54

Oula tu te complique pour pas grand chose j'ai l'impression.
Deja ton test de date pourquoi tu fais un strpos ?
Simplement :

Code: Tout sélectionner
if($contenu_date==$datenow)
{
  echo '<br> les dates son pareils : rien a changer';
}
else
{
  echo '<br> dates differentes : suppression de l'ancien fichier';
}


Mais a mon avis le plus simple serait encore d'écrire directement dans un fichier nommé avec la date du jour plutot ?
Au lieu d'écrire dans ip.txt et de le renommer toutes les 24h, tu écris dans ip_<ma_date>.txt
De cette facon le passage d'un jour a l'autre est automatique 8)

/* jerome */
Nouveau WRInaute
 
Messages: 18
Inscription: Mar Aoû 23, 2005 12:56

Message le Jeu Aoû 25, 2005 21:57

Ha non pardon j'ai du mal comprendre :?
En fait tu veux juste que le fichier soit remis a zero toutes les 24h ? Mais alors a quoi il sert ce fichier ?
Bref ta solution n'était pas si mal finalement, il suffit que tu compare correctement ta date (pas avec strpos() mais avec un ==).

Foxus
WRInaute accro
WRInaute accro
 
Messages: 1404
Inscription: Dim Jan 09, 2005 21:21

Message le Jeu Aoû 25, 2005 21:58

Ou la la
ben dit donc je suis gaté

oui mon ebergeur gere bien els taches cron mais j'osais pas franchir le pas, il parais que c'est pas si facile que ça a mettre en place je me trompe ?

rottman merci tu semble callé, bravo

Borower oui ta methode m'interessen tu a tous compris, on pourais egalement le supprimer et le recree, mais la condition doit etre : tous les 24 heures, et c'est la ou le bas blesse...

TOMHTML merci de ce code il me sera precieux je parie :)

CaYuS ouff, la ca m'epate, ton code est fonctionelle là, tel quelle ?

je vais essayer demain mais j'ai eu plein de soluce differente, surtout n'hesitez pas d'ici demain si vous avez un avis sur la question ou une solution toute bete car souvent c'est tellement basique que on vois pas du 1er coup lol :)

edit : /* jerome */ pas bete du tous, masi pk je n'ai pas penssez au == plus tot, bon je verrais ça demain mais ca semble etre ce qui manquer a ma methode de base, bien que comme tu l'a dit je crois pas que ca sois la plsu legere mais bon :) sinon j'ai besoin que d'un laps de temps de 24 heure pour que des gens accedent pas trop souvent a certain rubrique du site via leurs ip, etc, enfin bref gros dossier lol :) rien de mechant ;)

Merci de cette solidarité WRInautesque :)

/* jerome */
Nouveau WRInaute
 
Messages: 18
Inscription: Mar Aoû 23, 2005 12:56

Message le Jeu Aoû 25, 2005 22:23

Foxus a écrit:sinon j'ai besoin que d'un laps de temps de 24 heure pour que des gens accedent pas trop souvent a certain rubrique du site via leurs ip, etc, enfin bref gros dossier lol :) rien de mechant ;)


Ha ben dans ce cas la l'idéal serait de stocker dans le fichier (ou dans une base sql ce serait le top) l'ip et le timestamp (date et heure a la seconde pret) lors de chaque acces.
Ensuite tu compare le timestamp actuel (fonction time()) et celui dans le fichier pour l'ip donnée et si ca fait plus de 24 heures alors tu autorise.
C'est un peu plus compliqué a développer mais tellement plus propre et efficace.
Parce qu'avec ton systeme, si qqun vient a 23h il peut revenir a 1h du matin puisque le fichier aura ete remis a zero a minuit.
Tu peux faire un truc fiable, propre en une dizaine de lignes en utilisant une base mysql.
Bon courage ;)


CaYuS
WRInaute passionné
WRInaute passionné
 
Messages: 601
Inscription: Jeu Juil 14, 2005 7:25

Message le Jeu Aoû 25, 2005 22:38

Foxus a écrit:CaYuS ouff, la ca m'epate, ton code est fonctionelle là, tel quelle ?


Euh ... j'ose pas dire oui, car j'ai souvent l'habitude de parler trop vite...
Mais "chez moi", "j'ai testé" et "ça avait l'air de marcher" "tel quel".
Voilà, au moins je prends pas trop de risques là :lol:

Mais bon après je ne dis pas que c'est LA méthode, c'est une méthode parmi tant d'autres (cf les autres commentaires).


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités