Hi Tom,
Saubere Lösung. Spart ein Statement und eine Dateioperation.
Mit dem fseek() vor dem truncate ja.
Mir fällt noch ein: Man sollte überprüfen, ob das Locking true zurückgibt, und wenn nicht es später noch einmal probieren.
Ich dachte da an:
$fp = fopen("aktuell.txt","a+");
while($fp == false) {
sleep(1);
$fp = fopen("aktuell.txt","a+");
}
Was hälst du davon?
Sag mal, stören in so einem Ding eigentlich Zeilenumbrüche? Also ich meine in dem Abgespeicherten?
Und " bzw. ' solle man doch auf jeden Fall vorher umwandeln, oder?
Nein eben nicht, da die Daten streng serialisiert werden.
Ich kann also mit gutem Gewissen (fast) alle Zeichen ganz einfach abspeichern. Ich brauch also vor dem Abpseichern eigentlich nichts umzuwandeln - zumindesten theorethisch nicht.
Nun zur Ausgabe:
Das müsste mit einer einfache For-Schleife einwandfrei gehen. Und wenn ich für die index.php nur die beiden neuesten News haben will, schaue ich einfach die höchste vergebene ID nach und gebe diese und diese -1 aus.Nimm nicht for() sondern foreach() und break;
Ok, ich versuche es mal. Allerdings weiß ich das break noch nicht einzuordnen - wo brauche ich das?
foreach($datei['_data'] as $key) {
echo $key['name'];
echo $key['datum'];
//für alle Unterarrays und Felder
echo $key['nachricht'];
}
Ich denke mir das da oben so:
In dem Array $datei['_data'] gibt es die indexierten Zuweisungen, also 0,1,2,3 ....
Was ich oben machen will - kA ob das Script das auch will ;-) - ist, alle Nacheinander auszugeben.
Geht das? Wohl eher nicht. Wo ist der Fehler?
Speicher doch einfach in [Meta][lastsave] den letzten Savelauf ab. Bei jedem Aufruf lässt Du einfach prüfen, wann das letzte Mal wieviele Sätze abgetrennt wurden. Wenn dann vier Wochen lang kein Aufruf erfolgte, hat sich an der Sicherung doch auch nix geändert. Oder Du machst das einfach vom Überlaufen abhängig. Immer wenn 105 Sätze erreicht sind, werden die 5 ältesten abgetrennt und weggesichert - oder so ähnlich.
Letzteres sagt mir nicht so zu, ersteres schon eher.
Ich könnte jedem Beitrag noch in einem Unterarray den UNIX Timestamp mitgeben. Dann müsste ich doch eigentlich abfragen können, ob der Timestamp 30 x 24 x 60 x 60 Sekunden älter ist als der Aktuelle, und wenn er älter ist, wird dieser Beitragt archiviert.
Oder?
MfG, Dennis.
Signatur 1 von 3:
Meine Homepage: http://www.riehle-web.com
Tutorial: http://tutorial.riehle-web.com