FLOCK, ist wie lange gesperrt?
christoph
- php
Hallo,
ich schreibe gerade ein Script zum Textdateien ändern.
Mein Frage: Wenn ich
flock($file, LOCK_EX);
angebe und NICHT wieder freigebe, wie lange bleibt diese Datei gesperrt
flock($file, LOCK_UN);
Weil sobald ich diese Datei in Formularfelder öffnen lassen soll/darf kein anderer mehr diese Datei ändern, erst wenn ich diese bearbeitet habe.
Habe noch eine Frage, kann diese trotzem mit "r-" und fgets ausgelesen werden?
vielen dank
ich schreibe gerade ein Script zum Textdateien ändern.
Mein Frage: Wenn ichflock($file, LOCK_EX);
angebe und NICHT wieder freigebe, wie lange bleibt diese Datei gesperrt
Bis das Datei-Handle geschlossen wurde oder das Script zuende gelaufen ist.
Habe noch eine Frage, kann diese trotzem mit "r-" und fgets ausgelesen werden?
flock() ist nur unter Windows mandatory. Heisst im Klartext: wenn jemand flock() nicht benutzt, kann er trotz flock() nach belieben auf die Datei zugreifen.
vielen dank.
d.h. flock bringt auf dem Server garnichts?
Weil dort Linux läuft.
gruss chris
d.h. flock bringt auf dem Server garnichts?
Weil dort Linux läuft.
Unter Linux ist flock() eine Vereinbarung. Wenn es einer nicht benutzt, ist es wertlos. Es müssen halt alle benutzen.
was heisst alle benutzten?
Ich bräuchte es halt.
Hi christoph,
was heisst alle benutzten?
Ich bräuchte es halt.
Das wurde doch schon erklärt - wenn du einfach eine Datei öffnest und in sie hinein schreibst, ohne sie mit flock() vorher zu sperren, dann kannst du eben problemlos in die Datei schreiben.
Wenn du aber flock() verwendest (an allen Stellen, wo du auf eine Datei zugreifst), kannst du davon ausgehen, dass es auch funktioniert.
MfG, Dennis.
Hi christoph,
ich schreibe gerade ein Script zum Textdateien ändern.
Mein Frage: Wenn ich flock($file, LOCK_EX); angebe und NICHT wieder freigebe, wie lange bleibt diese Datei gesperrt?
Soweit ich weiß, bis dein PHP Script abgearbeitet wird - alles andere wäre ja sinnlos.
Weil sobald ich diese Datei in Formularfelder öffnen lassen soll/darf kein anderer mehr diese Datei ändern, erst wenn ich diese bearbeitet habe.
Da wirst du wohl dir selber ein System basteln müssen. Eine Möglichkeit wäre, dass du noch mit filemtime() (oder so ähnlich hieß das) den Zeitpunkt herrausfindest, zu dem die Datei zuletzt geändert wurde.
Wenn du diesen Wert noch in ein Hidden-Feld mit hineinschreibst, bekommst du ihn auch wieder zugeschickt, wenn der User die bearbeitete Datei wieder speichern will.
Dann kannst du überprüfen, ob der User den gleichen Timestamp dir zugeschickt hat, wie dir filemtime() zurückgibt. Ist dies der FAll, so wurde die Datei zwischenzeitlich nicht geändert.
So, hab grad die Funktion doch noch mal kurz nachgeschlagen - filemtime() ;-)
Habe noch eine Frage, kann diese trotzem mit "r-" und fgets ausgelesen werden?
Wenn du sie mit LOCK_EX geschützt hast, sollte für diesen Zeitpunkt ein auslesen für andere nicht mehr möglich sein. Das aber dieses Lockinig von PHP unter Umständen nicht immer richtig funktioniert (jeh nach Implementierung von PHP bzw. Hardware des Rechners), dazu solltest du im Archiv auch noch etliches finden.
MfG, Dennis.