PHP: Ben er bijna: ip-log 1x per week wissen...

Pagina: 1
Acties:

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Ik heb wat log txt's die elke week (ofzo) gewist mogen worden. Ik heb dit script geschreven, maar dit is voor elke dag. Hoe geef ik elke week aan? Moet ik dan 4 dagen in de maand definieren ofzo? :?
Wat is het makkelijkste?

<?php
$BestandDatGeleegdMoetWorden = "ip.txt";
$HetBestand = filemtime($BestandDatGeleegdMoetWorden);
$HetBestandDatum = date ("d-m-Y", $HetBestand);
$DatumNu = date ("d-m-Y");
if($HetBestandDatum != $DatumNu) {
$LeegBestand = fopen($BestandDatGeleegdMoetWorden,"w");
fclose($LeegBestand);
}
?>

  • flat
  • Registratie: Mei 2000
  • Niet online
kan je niet makkelijker een cron-job draaien?

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
nee. vind dit beter gaan.

  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 17-09 15:25
Gewoon de datum van het bestand van de huidige datum aftrekken (makkelijkst om de data naar Unix-timestamp te converteren, of daar al meteen mee te rekenen); als dit verschil groter is dan (7*24*3600) is het bestand langer dan 7 dagen geleden weggeschreven en kan het gewist worden.

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Oei... daar snap ik weinig van...

  • Jelle Niemantsverdriet
  • Registratie: Februari 2000
  • Laatst online: 17-09 15:25
Op donderdag 11 oktober 2001 21:33 schreef Victorio het volgende:
Oei... daar snap ik weinig van...
OK, dan gaan we hand in hand door PHP-land ;)

Onder Unix worden tijden opgeslagen als zgn. 'epochs', dit staat voor het aantal seconden sinds 1 januari 1970 (is dus idd een groot getal!).

Dit is niet echt tof om naar te kijken (11-10-2001 is nou eenmaal overzichtelijker dan 1002783522), maar wel heel handig om mee te rekenen.

Als je nl. wilt gaan rekenen met normale data, moet je steeds rekening houden met onhandige dingen als maanden die 28,29,30 of 31 dagen hebben. 20-10-2001+12 dagen, ehh, hoever komen we dan in november uit? Varieert steeds-> niet handig!

Wat niet varieert, is hoe lang een week in seconden duurt: dit is altijd 7 (dagen) * 24 (uur) * 60 (minuten) * 60 (seconden).

Dus als je nou de datum waarop je logbestand is weggeschreven omzet naar zo'n timestamp, en je neemt de timestamp van nu, kun je heel gemakkelijk uitrekenen hoeveel tijd er tussen zit. Als die tijd dus groter is dan die 7*24*60*60, is het bestand dus al 7 dagen geleden aangemaakt en kun je het wissen.

Hoe maak je nou zo'n timestamp?
Met mktime kun je een 'normale' datum omzetten, en met time krijg je de huidige tijd in timestamp-vorm. Maar de functie filemtime, die jij gebruikt, geeft al een timestamp terug (die jij nu omzet met date).

Nou, nu moet je verder kunnen komen hoop ik!

edit:
paar enters

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Ok, kijk,

Heb dit script dat elke dag m'n poll ip's wist.
Hetzelfde wil ik voor m'n gastenboek ip's maar dan 1x per week.

<?php
$BestandDatGeleegdMoetWorden = "bla/poll_ip.txt";
$HetBestand = filemtime($BestandDatGeleegdMoetWorden);
$HetBestandDatum = date ("d-m-Y", $HetBestand);
$DatumNu = date ("d-m-Y");
if($HetBestandDatum != $DatumNu) {
$LeegBestand = fopen($BestandDatGeleegdMoetWorden,"w");
fclose($LeegBestand);
}
?>

Dus dit is de huidige tijd:

$DatumNu = date ("d-m-Y", int time (void));

En dit moet de tijd van één keer per week worden:

$HetBestandDatum = date ("d-m-Y", mktime (0,0,0,12,32,2001));

Toch??? Maar hoe geef ik nu een keer per week aan? :?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Klaar voor een nieuwe uitdaging.


  • flat
  • Registratie: Mei 2000
  • Niet online

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • flat
  • Registratie: Mei 2000
  • Niet online
Op dinsdag 16 oktober 2001 16:22 schreef chem het volgende:
http://www.php.net/manual/en/function.strftime.php

lalalalaaa %W lalalaa
hmm ja da's ook een idee

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Je bedoelt dan dit?

strftime("%W",604800)
Pagina: 1