Hallo zusammen,
ich betreibe auf einem WebPack XXL bei Hosteurope ein Forum älteren Baujahres, bei dem die komplette Struktur nicht in einer Datenbank abgelegt wird, sondern in Dateien. Im Endeffekt wird jeder Thread in einer Datei gespeichert.
Fragt jetzt bitte nicht warum ich diese "angestaubte" Technik verwende. Eine Umstellung steht in naher Zukunft an. Seit kurzem habe ich aber das Problem, dass Threads einfach ins Nirvana stürzen. Da die Umstellung noch etwas dauert würde ich gerne diesen Fehler vorher lösen. Ein Fehler im Forumsscript konnte bisher nicht gefunden werden und bisher (wird seit 2001 eingesetzt) funktionierte das Board ohne Probleme.
Um die einzelnen Dateien zu schützen, werden diese beim Schreiben mit flock() gesperrt.
$fp = @fopen($daten_pfad . "/". $thread, "a");
flock($fp,2);
fwrite($fp,"$aktuell|$uhrzeit|$datum|$poster|$email|$betreff|$ message|$ip|$htmlverarbeiten|$letzter_beitrag|0|$t hread_symbol|0|\n");
flock($fp,3);
fclose($fp);
Auf PHP.NET steht nun der Hinweis, dass für die Wahl des Modus von flock() vor PHP 4.0.1 Zahlen (1,2,3,4) ab PHP 4.0.1 feste Begriffe (LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB) verwendet werden. Da in meinem Code noch Zahlen stehen, stellt sich die Frage ob PHP 4.3.5 abwärtskompatibel ist und die Zahlen ebenfalls verarbeitet, oder ob hier der Fehler liegt.
Weiterhin steht auf PHP.NET folgender Hinweis:
Da flock() einen Dateizeiger benötigt, könnten Sie eine spezielle Sperrdatei benutzen, um den Zugriff auf eine Datei zu schützen, welche Sie mittels Öffnen im Schreibmodus (mit dem Argument "w" or "w+" von fopen()) kürzen wollen.
siehe http://de.php.net/manual/de/function.flock.php
Sind hier nur "w" oder "w+" sinnvoll, oder geht auch die Option "a" die in meinem Fall verwendet wird. Wenn nicht, wie kann man beim Öffnen einer Datei zum schreiben mit "w" den Dateizeiger ans Ende der Datei setzten (bei "a" wird dies automatisch gemacht).
Vielen Dank für Eure Hilfe.
Gruss Michael
ich betreibe auf einem WebPack XXL bei Hosteurope ein Forum älteren Baujahres, bei dem die komplette Struktur nicht in einer Datenbank abgelegt wird, sondern in Dateien. Im Endeffekt wird jeder Thread in einer Datei gespeichert.
Fragt jetzt bitte nicht warum ich diese "angestaubte" Technik verwende. Eine Umstellung steht in naher Zukunft an. Seit kurzem habe ich aber das Problem, dass Threads einfach ins Nirvana stürzen. Da die Umstellung noch etwas dauert würde ich gerne diesen Fehler vorher lösen. Ein Fehler im Forumsscript konnte bisher nicht gefunden werden und bisher (wird seit 2001 eingesetzt) funktionierte das Board ohne Probleme.
Um die einzelnen Dateien zu schützen, werden diese beim Schreiben mit flock() gesperrt.
$fp = @fopen($daten_pfad . "/". $thread, "a");
flock($fp,2);
fwrite($fp,"$aktuell|$uhrzeit|$datum|$poster|$email|$betreff|$ message|$ip|$htmlverarbeiten|$letzter_beitrag|0|$t hread_symbol|0|\n");
flock($fp,3);
fclose($fp);
Auf PHP.NET steht nun der Hinweis, dass für die Wahl des Modus von flock() vor PHP 4.0.1 Zahlen (1,2,3,4) ab PHP 4.0.1 feste Begriffe (LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB) verwendet werden. Da in meinem Code noch Zahlen stehen, stellt sich die Frage ob PHP 4.3.5 abwärtskompatibel ist und die Zahlen ebenfalls verarbeitet, oder ob hier der Fehler liegt.
Weiterhin steht auf PHP.NET folgender Hinweis:
Da flock() einen Dateizeiger benötigt, könnten Sie eine spezielle Sperrdatei benutzen, um den Zugriff auf eine Datei zu schützen, welche Sie mittels Öffnen im Schreibmodus (mit dem Argument "w" or "w+" von fopen()) kürzen wollen.
siehe http://de.php.net/manual/de/function.flock.php
Sind hier nur "w" oder "w+" sinnvoll, oder geht auch die Option "a" die in meinem Fall verwendet wird. Wenn nicht, wie kann man beim Öffnen einer Datei zum schreiben mit "w" den Dateizeiger ans Ende der Datei setzten (bei "a" wird dies automatisch gemacht).
Vielen Dank für Eure Hilfe.
Gruss Michael
Kommentar