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

  • Auteur de la discussion Auteur de la discussion Foxus
  • Date de début Date de début
WRInaute passionné
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:
$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
 
WRInaute occasionnel
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 ?
 
WRInaute passionné
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?
 
WRInaute passionné
Tu fais une tache CRON programmée toutes les 24h :
Code:
php /delete.php


delete.php :
Code:
<?php ftruncate("fichier.txt",0);?>
 
Nouveau WRInaute
Oula tu te complique pour pas grand chose j'ai l'impression.
Deja ton test de date pourquoi tu fais un strpos ?
Simplement :

Code:
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)
 
Nouveau WRInaute
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 ==).
 
WRInaute passionné
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 :)
 
Nouveau WRInaute
Foxus a dit:
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 ;)
 
WRInaute occasionnel
Foxus a dit:
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).
 
Discussions similaires
Haut