Grösse einer .txt auslesen und ggbf. löschen

DaveThuet

Erfahrenes Mitglied
Guten Sonntag liebe PHP-Profis.

Ich habe eine Frage und habe keine Ahnung ob dies überhaupt realisierbar ist. :)
Der Besucher-Zähler "BesucherOnline.php" schreibt in eine txt-Datei IP und Zeit des Besuchers.
PHP:
<?php
$daten = "besucher.txt";
$time = time();
$ip = getenv("REMOTE_ADDR");
$ablaufzeit = $time - "300"; // 300 Sekunden = 5 Minuten
$pruefung = @file($daten);

while (list ($line_num, $line) = @each ($pruefung)) {
$zeiten = explode("&&",$line);
if($zeiten[0] <= $ablaufzeit) {
$fp = fopen( "$daten", "r" );
$contents = fread($fp, filesize($daten));
fclose($fp);
$line=quotemeta($line);
$string2 = "";
$replace = ereg_replace($line, $string2, $contents);
$fh=fopen($daten, "w");
@flock($fp,2);
fputs($fh, $replace);
@flock($fp,3);
fclose($fh);
}
}
$ippruefung = @file($daten);
while (list ($line_num, $line) = @each ($ippruefung)) {
$ips = explode("&&",$line);
if($ips[1] == $ip) {
$fp = fopen( "$daten", "r" );
$contents = fread($fp, filesize($daten));
fclose($fp);
$line=quotemeta($line);
$string2 = "";
$replace = ereg_replace($line, $string2, $contents);
$fh=fopen($daten, "w");
@flock($fp,2);
fputs($fh, $replace);
@flock($fp,3);
fclose($fh);
}
}
$fp = fopen("$daten", "a+");
flock($fp,2);
fputs ($fp, "$time&&$ip&&\n");
flock($fp,3);
fclose ($fp);
$anzahldaten = file($daten);
$anzahl = count($anzahldaten);
echo $anzahl." Besucher online";
?>
Meine Frage ist gibt es eine Möglichkeit diese txt-Datei auf ihre Grösse zu prüfen und sagen wir bei 1 MB die gesamte txt-Datei zu löschen? Ich habe es im Moment per Cron gemacht indem ich einfach die gesamte Datei lösche aber so wird viel zu oft und auch unnötigerweise gelöscht. Wäre sehr dankbar für jegliche Hilfe in diesem Vorhaben.
 
Hallo alxy,
erstmals danke für dein Link jedoch komme ich damit nicht weiter... :(
Mit der Funktion «filesize» kann ich einfach mal die Datei-Grösse herausfinden/auslesen.
Aber wie Programmiert man das auf mein Code, ich bin kein PHP-Kenner und wäre dankbar für mehr Hilfe. Bisher habe ich per Cron einfach alle 15 Minuten folgenden Befehl gestartet:
PHP:
<?php echo unlink("besucher.txt"); ?>
 
OK, ich konnte es anders Lösen indem ich ein MySQL-Counter kreiert habe. Trotzdem danke für die Hilfe.
 
Zurück