PHP 4.3.5 und flock()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP 4.3.5 und flock()

    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

  • #2
    Dieses kleine Script hätte Dir ganz einfach Deine flock-Frage beantworten können ... :
    PHP-Code:
    <?php
    printf
    ("%d %d %d %d"LOCK_SHLOCK_EXLOCK_UNLOCK_NB);
    ?>
    Das hätte Dir Tipparbeitet, Wartezeit ... und mir 2 Minuten gespart ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar

    Lädt...
    X