Rechercher une fonction PHP

flock

(PHP 4, PHP 5, PHP 7)

flockPortables Datei-Sperr-Verfahren (advisory locking)

Beschreibung

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

flock() erlaubt ihnen, ein einfaches Leser-/Schreiber-Modell umzusetzen, was auf nahezu jeder Platform (inklusive der meisten Unix Abkömmlinge und sogar Windows) genutzt werden kann.

Unter PHP-Versionen vor 5.3.2, wurde die Sperre auch von fclose() gelöst (was auch automatisch aufgerufen wird, wenn das Skript endet).

PHP unterstützt eine portable Art komplette Dateien "beratend" zu sperren (was bedeutet, dass alle zugreifenden Programme das gleiche Sperrverfahren nutzen müssen, oder die Sperre wird nicht wirken). Standardmäßig wird diese Funktion blockieren, bis die angefragte Sperre erlangt wurde; dies kann mit der Option LOCK_NB, dokumentiert unten, gesteuert werden.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Parameter-Liste

handle

Eine Dateisystemressource (resource), wie sie in der Regel von fopen() zurückgegeben wird.

operation

operation ist einer der Folgenden Werte:

  • LOCK_SH um eine geteilte Sperre (Leser) zu erhalten.
  • LOCK_EX um eine exklusive Sperre (Schreiber) zu erhalten.
  • LOCK_UN um eine Sperre zu lösen (geteilt oder exklusiv).

Man kann auch LOCK_NB als Bitmaske zu einer der obigen Operationen hinzufügen, falls man nicht möchte, dass flock() während der Sperrens blockiert.

wouldblock

Das optionale dritte Argument ist auf 1 gesetzt, falls das Sperren blockierte (EWOULDBLOCK-Fehlernummer).

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Changelog

Version Beschreibung
5.5.22, 5.6.6 Unterstützung für den wouldblock-Parameter unter Windows hinzugefügt.
5.3.2 Das automatische Entsperren, wenn das Ressourcen-Handle der Datei geschlossen wurde, wurde entfernt. Entsperren muss nun immer manuell ausgeführt werden.

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Beispiele

Beispiel #1 Einfache, exklusive Sperre

<?php

$fp 
fopen("/tmp/lock.txt""r+");

if (
flock($fpLOCK_EX)) { // exklusive Sperre
    
ftruncate($fp0); // kürze Datei
    
fwrite($fp"Write something here\n");
    
fflush($fp); // leere Ausgabepuffer bevor die Sperre frei gegeben wird
    
flock($fpLOCK_UN); // Gib Sperre frei
} else {
    echo 
"Konnte Sperre nicht erhalten!";
}

fclose($fp);

?>

Beispiel #2 Verwendung von LOCK_NB

<?php
$fp 
fopen('/tmp/lock.txt''r+');

/* Aktiviere die LOCK_NB-Option bei einer LOCK_EX-Operation */
if(!flock($fpLOCK_EX LOCK_NB)) {
    echo 
'Kann Sperre nicht erhalten';
    exit(-
1);
}

/* ... */

fclose($fp);
?>

Erste Seite von PHP-Handbuch Inhaltsverzeichnis Haut

Anmerkungen

Hinweis:

flock() nutzt "verbindliche" (mandatory) anstatt "beratende" (advisory) Sperren unter Windows. "Verbindliches" Sperren wird auch unter Linux und System-V-basierten Betriebssystemen, durch den üblichen Mechanismus, der von dem fcntl()-Systemaufruf geliefert wird, unterstützt: das heißt, falls bei der fraglichen Datei das setgid-Zugriffs-Bit gesetzt ist und das Ausführungs-Bit für Gruppen null ist. Unter Linux muss das Dateisystem zusätzlich mit der Mount-Option mand eingebunden sein, damit dies Auswirkungen hat.

Hinweis:

Da flock() einen Dateizeiger benötigt, müssen Sie unter Umständen 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.

Hinweis:

Kann nur mit Dateizeigern verwendet werden, die von fopen() für lokale Dateien zurückgegeben wurden oder mit Dateizeigern, die auf Nutzer-Modus Streams zeigen, die die streamWrapper::stream_lock() Methode implementieren.

Warnung

Weist man dem handle Argument einen anderen Wert zu, wird nachfolgender Code die Sperre lösen.

Warnung

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 von antiquierten Dateisystemen wie FAT und dessen Derivaten nicht unterstützt, und gibt deshalb in solchen Umgebungen immer FALSE zurück.

Finde eine PHP-Funktion

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-flock.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Referenzen

  1. Zeigen Sie - html-Dokument Sprache des Dokuments:fr Manuel PHP : http://php.net

Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.

Inhaltsverzeichnis Haut