Hi Tom,
So ist es nicht vollständig und Dein Script hängt sich dann auf.
Stimmt, es würde unendlich lang probieren die Datei zu öffnen. Könnte zu einer Endlosschleife werden.
Jedoch möchte ich es trotzdem noch einmal selber probieren, diesmal mit einer do...while Schleife:
$x = 0;
do {
$fp = fopen("aktuell.txt","a+");
if(!$fp) break;
$x++;
} while($x<5);
Das müsste doch auch gehen, da er durch das break die Schleife wenn Datei geöffnet verlässt und außerdem abricht, wenn $x < 5 zu false wird.
#--------------------------------------------------------------------
function writelock($lockfile) ### aus speichern.php ###
{
# Lockdatei öffnen oder anlegen
for ($x=0;$x<5;$x++)
{
if($lh = @fopen($lockfile,"a+")) break;
usleep(8000); ## 8ms warten bis zum nächsten Versuch
//Geht auf Windows laut SelfPHP nicht, weshalb ich
//sleep() verwendet habe.
}
if (!$lh) return false;
# Lockversuch
for ($x=0;$x<5;$x++)
{
if (@flock($lh,LOCK_EX + LOCK_NB)) return $lh;
usleep(8000); ## 8ms warten bis zum nächsten Versuch
//s.o.
}
fclose($lh);
//muss doch fclose heißen und nicht close, oder?
return false;
}
Die Sache mit der intelligenten Anzeige überlege ich mir noch.
Man möchte ja irgendwie bkättern können und immer nur 5 Sätze oder so anzeigen.
Hm, dürfte etwas komplizierter werden, wobei die Idee...
Man müsste mit der Last ID arbeiten. Dann zeigt man eben nur den Beitrag an, plus die soundsovielten davor, was sich durch eine Variable am Anfang des Scriptes konfigurieren lassen sollte.
Mit dem Blättern...., könnte schwieriger werden. Es wäre sicherlich zu machen, dass man das Script mit einer GET Variablen hintendran aufruft, z.B. ?sec=1 wären die ersten soundsovielten Beitrage, 2 wären die nächsten soundsovielten Beitrage. Nachteil: sec=1 sind heute die und morgen ganz andere Nachrichten.
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.
z.B. Das ist Philosphie. Aber man sollte seine Gedanken schriftlich niederlegen, damit man später noch durchsteigt.
Also das heißt, dieser UNIX Timestamp sind die Anzahl von Sekunden seit der UNIX Startepoche oder so. Ältere Daten müssten somit kleiner sein also neuere, womit man die prima vergleichen könnte.
An den aktuellen Timestamp ranzukommen ist nicht schwer: time() lautet der Befehl. Was ich aber noch nicht gefunden habe, die Funktion, die aus diesen Zahlen dann wieder etwas "lesbares" macht.
Was muss man da verwenden?
MfG, Dennis.
[remote-signature:http://riehle-web-modellbahn.s4.cybton.com/signatur/test.php]