Kleine PHP Chat-Textdatei verwalten

son gohan

Erfahrenes Mitglied
Hallo, ich habe ein kleines PHP Chat Script welches mit Framesets aufgebaut ist und mit meta Refresh aktualisiert wird.

Zum Chat gehört die Texdatei Chatten.txt wo alles was geschrieben wird gespeichert wird. Ich muss diese Datei aber immer selber löschen weil ich keine andere Möglichkeit kenne das zu automatisieren. Wie könnte man das aber automatisieren?

Ich könnte auch Tipps gebrauchen was Ihr für Sinnvoll hält an Zeitabständen fürs löschen, ich hatte mir eher gedacht, das ich nicht nach Zeitablauf, sondern eher nach Volumenanzahl etwas löschen lassen will, aber bin mir auch nicht schlüssig.

Bye The Way: Ich suche noch ein Script womit ich anzeigen lassen kann wieviel Besucher im Chat sich aufhalten, das ganze will ich aber auf der Startseite und einmal auch in der Chatseite, aber ich will das nicht verwechseln mit Besucher online und nur im Chatt online, versteht Ihr? :-).
 
Hallo!

Wie währe es denn hiermit?
PHP:
<?php
$datei = "bla.txt";
$maxsize= "10"; // 10 MB
 
if(filesize($datei) >= $maxsize*1024*1024) {
$open = fopen($datei, "w");
fclose($open);
}
?>
Dafür gibt es die Dateisystem Funktionen von PHP.

Gruss Dr Dau
 
Eigentlich schon..... wo er ja eh schon mit fopen() arbeitet. ;)
Und mit ein klein wenig mühe, währe er auch sicherlich auf filesize() gekommen.
Der Rest ergibt sich ja automatisch. :D
 
Mal eine Frage meinerseits , könnte das nicht zu derben Durchsatz Problemen kommen bei den User wenn jedesmal eine 10 mb grosse Textdatei ausgelesen wird ?

Da weiss ich nun nicht was wäre wenn man nun eine gewisse Anzahl von Einträgen nur ausliesst. Aber 10 MB sind happig , die jedesmal auslesen das könnte eine weile dauern.
Selbst bei 1 MB stell ich mir das schon etwas ladeaufwendiger vor.
Zumal wird das dann noch ein wenig komplizierter :P Angenommen man kommt neu in den Chat und wird erstmal mit all den alten Einträgen zugebombt , naja oki das ist nur so eine andere Überlegung.
 
Ich würde mir erstma folgende Fragen stellen:

1. Sind allgemein Textdateien sinnvolle Speichermöglichkeiten (gerade für ein Chat oder Forum)?

2. Sind Datenbanken nicht besser geeignet?

Dabei wirst du feststellen, das sich eine 10 MB Datenbanktabelle besser auslesen lässt als eine 10 MB Textfile. Sicherlich liegen die Datenbanktabellen prinzipiell auch nur als Datei vor, aber ich denke das ein mysql-Zugriff perfomranter ist, als ein php - dateizugriff (Falls es nicht so ist, bitte berichtigen).
Zumindestens aber kannste mit ner Datenbanktabelle besser umgehen ;).

Auch ist ein chat nicht schön der via Meta-Refresh aktualisiert wird. vielmehr sollte das über einen Stream laufen. Und das ist nicht unbedingt eine Stärke von PHP (obgleich es natürlich möglich ist - oder?).


Um nun noch etwas zu deiner eigentlichen Frage zu posten, ich würde das anders lösen (wenn du es schon so lösen willst).
Lösche nicht die Datei, wenn sich 10 MB groß ist, sondern Loesche immer alles was größer als 10 (oder 1 MB ist).
Beispiel:
Sagen wir die Textdatei darf nur 20 Zeichen enthalten (zur Vereinfachung) und sie hat folgenden inhalt.

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Nach deinem System würdest du die Ganze Datei löschen und sie würde dann dementsprechend nur noch "" enthalten (sprich nichts).
Ich wrüde einfach alles entfernen was über die 20 Zeichen hinaus geht. So bleibt im endeffekt noch "ABCDEFGHIJKLMNOPQRSTU" übrig.

Wieso? Wenn der älteste Eintrag in der Textdatei schon 20 Stunden alt ist, interessiert das wirklich keinen mehr. Der neuste beitrag aber gerade mal 10 Sekunden. Dann würde der neuste Beitrag auch gelöscht und der ältetse (zu Recht) auch. Machst du es anders wird nur der älteste Beitrag gelöscht und der neuste bleibt noch erhalten ;).

So, das war`s erstma!

MfG
 
@FipsTheThief, naja, er könnt ja auch schon nach 1 Byte löschen. :-)
Mein Codeschnippels soll ja keine auf seine Bedürfnise individuell zugeschnittene Lösung sein, sondern nur ein Beispiel. ;)
Der User bekommt ja nicht die ganze Datei, sondern nur dass was PHP den Vorgaben entsprechend findet.
Auf die Bandbreite dürfte dass also kein als zu grossen Einfluss nehen, viel schlimmer wird die Serverauslastung sein.
Schliesslich muss die gesamte Datei ja jedesmal neu geöffnet werden..... das öffnen allein bringt aber noch nicht viel. ;)

Ob eine Datenbank nun schneller ist oder nicht, kann ich nicht sagen..... aber allgemein soll ein PHP Chat nicht grad die bessere Wahl sein.
Er sollte aber erstmal die AGB seines Hosters angucken, i.d.R. sind solche oder ähnlich serverlastige Scripte nämlich verboten..... einige Hoster schreiben es klar und deutlich, andere eher zwischen den Zeilen.
 
Also danke für die Denkanstösse Leute, vorallem der von pornex war gut, so mach ich das glaub ich auch.

Wegen der Frage ob Datenbank oder textdatei muss ich nochmal überlegen, ich habe das Script eigentlich nur von einem Freund, der hat aber viel zu tun und deshalb mus ich mich da selber schlau machen und jetzt nochmal umschreiben in mysql wäre eine kleine Hürde frü mich.
 
Zurück