flock() Problem

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

  • flock() Problem

    Ich möchte, dass die Datei nur zum Schreiben gesperrt wird, aber gelesen werden kann, doch erhalte ich bei der 'test.php' sofort die Ausgabe 'fehler'.

    lock.php
    PHP-Code:
    $fp fopen'test.txt''w' );
    flock$fpLOCK_EX  );
    fwrite$fpdate("H:s") );
    sleep);
    flock$fp);
    fclose$fp ); 
    test.php (die während des Laufzeit von lock.php aufgerufen wird)
    PHP-Code:
    $fp fopen'test.txt''r' );
    if( ! 
    $con fgets$fp ) ) 
        echo 
    'fehler';
    else
        echo 
    $con;
    fclose$fp ); 

  • #2
    Wo prüfst du denn, in der zweiten php Datei, ob die Datei gelockt ist?
    Wie kommst du auf die witzige Idee, dass die Daten ohne fflush() geschrieben werden?
    Wir werden alle sterben

    Kommentar


    • #3
      Zitat von einermeiner Beitrag anzeigen
      Ich möchte, dass die Datei nur zum Schreiben gesperrt wird, aber gelesen werden kann, doch erhalte ich bei der 'test.php' sofort die Ausgabe 'fehler'.
      Natürlich, weil das andere Script einen exklusiven Lock hält, und du im zweiten Script gar nicht erst mal höflich nach einem shared lock fragst.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Natürlich,...
        Nee, die Meldung kommt wegen dem fehlenden fflush().
        Wir werden alle sterben

        Kommentar


        • #5
          Ich glaube, ich verstehe da etwas nicht.
          • Um eine verteilte, nur lesende Verriegelung zu erhalten, setzen Sie operation auf LOCK_SH (bzw. 1 vor PHP 4.0.1).
          • Um eine exklusive, nur schreibende Verriegelung zu erhalten, setzen Sie operation auf LOCK_EX (bzw. 2 vor PHP 4.0.1
          Was genau ist mit exklusiv und verteilt gemeint?

          (am fflush() liegt es nicht, die Daten werden schon korrekt geschrieben)

          Füge ich in der test.php
          flock( $fp, LOCK_SH );

          hinzu, dann funktioniert es zwar, aber erst nachdem, in der 1. Datei fclose() ausgeführt würde
          Ich dachte, dass man mit dieser Funktion z.B. einen Counter realisieren könnte, in den nacheinander geschrieben wird, aber immer zugegriffen werden kann.
          Zuletzt geändert von einermeiner; 21.10.2011, 15:19.

          Kommentar

          Lädt...
          X