filetype
fnmatch
Filesystem
PHP Manual

# flock

(PHP 4, PHP 5)

flock — Portables Datei-Verriegelungs-Verfahren

### Beschreibung

bool flock ( resource `$handle` , int `$operation` [, int `$&wouldblock` ] )

PHP liefert einen portablen Weg, Dateien in einer "beratenden" Art und Weise zu verriegeln. D.h. alle zugreifende Programme müssen die gleiche Art und Weise der Verriegelung benutzen, oder es funktioniert nicht.

flock() arbeitet mit `handle` , welcher ein existierender Dateizeiger sein muss. Der Parameter `operation` bestimmt die Art der Verriegelung und kann einen der folgenden Werte annehmen:

- 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).
- Um eine Verriegelung freizugeben (lesend oder schreibend), setzen Sie `operation` auf `LOCK_UN` (bzw. 3 vor PHP 4.0.1).
- Wenn Sie Zugriffe während der Verriegelung durch flock() erlauben wollen, fügen Sie `LOCK_NB` (bzw. 4 vor PHP 4.0.1) zu `operation` hinzu.

flock() erlaubt es Ihnen ein einfaches Leser/Schreiber Modell zu erstellen, welches auf fast jeder Plattform benutzt werden kann (inkl. den meisten UNIX-Derivaten und auch Windows). Das optionale dritte Argument ist auf `TRUE` gesetzt, wenn die Verriegelung sperren sollte (EWOULDBLOCK errno Bedingung).

Gibt bei Erfolg `TRUE` zurück, im Fehlerfall `FALSE`.

> 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.

Warnung

flock() funktioniert nicht auf NFS und verschiedenen anderen vernetzten Dateisystemen. Für weitere Detail konsultieren Sie bitte Ihre Betriebssystemdokumentation.

Bei einigen Betriebssystemen ist flock() auf dem Prozesslevel implementiert. Wenn Sie ein multithreaded Server API wie ISAPI benutzen können Sie sich nicht auf flock() verlassen, um Dateien vor anderen PHP-Skripten zu schützen, welche in parallelen Threads der gleichen Server-Instanz laufen!

flock() wird antiquierten Dateisystemen wie FAT und dessen Derivate nicht unterstützt, und gibt deshalb in solchen Umgebungen immer `FALSE` zurück (Dies ist speziell bei Windows 98 Benutzern der Fall).

filetype
fnmatch
Filesystem
PHP Manual