flock() - was passiert, wenn gelockt?

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

  • flock() - was passiert, wenn gelockt?

    Mit flock() kann man Dateien sperren, während sie geändert werden. So kann eine Datei zum gleichen Zeitpunkt nur von einem Programm geändert werden.


    Programm A ändert die Datei text.txt und sperrt sie mit flock($var,2). Was passiert, wenn ein anderes Programm B zum gleichen Zeitpunkt die gelockte Datei ändern will? Gibt es eine Fehlermeldung aus? "Wartet" es, bis die Sperrung aufgehoben ist und führt dann seine Aufgabe dann aus?

    Es geht darum, dass die Änderung von Programm B an text.txt nicht verloren gehen soll.

    Dem Manual habe ich es nicht entnehmen können.

    Tschüss,
    Maze

  • #2
    Re: flock() - was passiert, wenn gelockt?

    Original geschrieben von amazed
    Programm A ändert die Datei text.txt und sperrt sie mit flock($var,2). Was passiert, wenn ein anderes Programm B zum gleichen Zeitpunkt die gelockte Datei ändern will? Gibt es eine Fehlermeldung aus? "Wartet" es, bis die Sperrung aufgehoben ist und führt dann seine Aufgabe dann aus?
    Na dann teste es doch!
    _____________
    Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
    [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

    Kommentar


    • #3
      Ich kenn das aus anderen Programmiersprachen....Hierbei wird u.A. eine andere Applikation die darauf zugreifen möchte einfach blockiert.....

      Bei PHP
      ich denke auf jeden Fall wird die Applikation gestoppt und eine Fehlermeldung wird wohl auch erscheinen....So kenne ich mal PHP
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        Rs ist halt nicht ganz leicht, das zu testen. Man muss ja genau den richtigne Zeitpunkt erwischen.

        Anders:
        Kann es hiermit funktionieren?

        PHP-Code:
        $fp fopen($datei,"w");
            
        flock($fp,2);
                while (!
        fwrite($fp$rein));
            
        flock($fp,3);
        fclose($fp); 

        Kommentar


        • #5
          Ich denke nein....

          fclose wird vermutlich erst flock beenden.

          Schon mal im Manual gelesen?
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar

          Lädt...
          X