Heim php教程 php手册 Detaillierte Einführung in die Grundlagen der PHP-Flockdatei lock_php

Detaillierte Einführung in die Grundlagen der PHP-Flockdatei lock_php

May 16, 2016 am 09:00 AM
flock 文件锁

flock
(PHP 4, PHP 5)

flock – leichte Empfehlung zum Sperren von Dateien

Beschreibung
bool flock ( int $handle , int $operation [, int &$wouldblock ] )
PHP unterstützt eine einfache Methode zum Sperren aller Dateien auf beratende Weise (das heißt, alle zugreifenden Programme müssen auf die gleiche Weise gesperrt werden, sonst funktioniert es nicht).

Hinweis:

flock() wird unter Windows erzwungen.

Das Handle der flock()-Operation muss ein Zeiger auf eine offene Datei sein. operation kann einer der folgenden Werte sein:


Um eine gemeinsame Sperre (Leseprogramm) zu erhalten, setzen Sie operation auf LOCK_SH (in Versionen vor PHP 4.0.1 auf 1 gesetzt).
Um eine exklusive Sperre (Schreibprogramm) zu erhalten, setzen Sie operation auf LOCK_EX (in Versionen vor PHP 4.0.1 auf 2 gesetzt).
Um eine Sperre (ob gemeinsam oder exklusiv) aufzuheben, setzen Sie Operation auf LOCK_UN (in Versionen vor PHP 4.0.1 auf 3 gesetzt).
Wenn Sie nicht möchten, dass flock() blockiert, wenn es gesperrt ist, fügen Sie LOCK_NB zur Operation hinzu (in Versionen vor PHP 4.0.1 auf 4 gesetzt).

flock() ermöglicht die Implementierung eines einfachen Lese-/Schreibmodells, das auf jeder Plattform (einschließlich der meisten Unix-Derivate und sogar Windows) verwendet werden kann. Der optionale dritte Parameter wird auf TRUE gesetzt, wenn die Sperre blockieren würde (im Falle des EWOULDBLOCK-Fehlercodes). Der Sperrvorgang kann auch durch fclose() aufgehoben werden (wird auch automatisch aufgerufen, wenn die Codeausführung abgeschlossen ist).

Gibt TRUE bei Erfolg zurück, oder FALSE bei Misserfolg


Beispiel #1 flock() Beispiel

Code kopieren Der Code lautet wie folgt:

$fp = fopen("/tmp/lock.txt", "w+"
if (flock($fp, LOCK_EX)) { // exklusive Sperre ausführen
fwrite($fp, "Schreibe hier etwas"); // Sperre aufheben
} else {
echo „Die Datei konnte nicht gesperrt werden!“;
fclose($fp>?>) >
Da flock() einen Dateizeiger erfordert, müssen Sie möglicherweise eine spezielle Sperrdatei verwenden, um den Zugriff auf Dateien zu schützen, die im Schreibmodus geöffnet werden sollen (fügen Sie „w“ oder „w+“ zur fopen()-Funktion hinzu). .

Warnung
flock() kann nicht mit NFS und einigen anderen Netzwerkdateisystemen verwendet werden. Weitere Informationen finden Sie in der Dokumentation Ihres Betriebssystems.
In einigen Betriebssystemen wird flock() auf Prozessebene implementiert. Bei Verwendung einer Multithread-Server-API (z. B. ISAPI) ist es möglicherweise nicht möglich, sich zum Schutz der Datei auf flock() zu verlassen, da die Datei von PHP-Skripten verarbeitet werden kann, die in anderen parallelen Threads in derselben Serverinstanz ausgeführt werden.
flock() unterstützt keine älteren Dateisysteme wie FAT und seine Derivate. Daher wird in dieser Umgebung immer FALSE zurückgegeben (insbesondere für Windows 98-Benutzer).


Einführung in die Verwendung der Dateisperrfunktion Flock-Funktion in PHP:


Syntax:

bool flock (int $handle, int $operation [, int & $wouldblock ] )
Das Handle der flock()-Operation muss ein Zeiger auf eine offene Datei sein. operation kann einer der folgenden Werte sein: 1. Um eine gemeinsame Sperre (Leser) zu erhalten, setzen Sie operation auf LOCK_SH (in Versionen vor PHP 4.0.1 auf 1 gesetzt) ​​
2, um eine exklusive Sperre zu erhalten (Writer), setze Operation auf LOCK_EX (in Versionen vor PHP 4.0.1 auf 2 gesetzt) ​​
3. Um die Sperre aufzuheben (ob gemeinsam genutzt oder exklusiv), setze Operation auf LOCK_UN (in Versionen vor PHP 4.0.1). auf 3 in der Version)
4. Wenn Sie nicht möchten, dass flock() blockiert, wenn es gesperrt ist, fügen Sie LOCK_NB zur Operation hinzu (in Versionen vor PHP 4.0.1 auf 4 gesetzt) ​​

Siehe unten Code:

a.php




Code kopieren


Der Code lautet wie folgt:
< ;?php $file = "temp.txt"; $fp = fopen($file, 'w'); if(flock($fp, LOCK_EX)){ fwrite( $fp, "abc");
sleep(10);
fwrite($fp, "123");
}
fclose($ fp);
?>


b.php




Code kopieren

Der Code lautet wie folgt:
$file = "temp.txt" $fp = fopen($file, 'r'); echo fread($fp, 100); fclose($fp>?>
Nachdem Sie a.php ausgeführt haben, führen Sie sofort b.php aus und Sie können die Ausgabe sehen:
abc
Warten Sie, bis die Ausführung von a.php abgeschlossen ist, und führen Sie b.php aus, und Sie können die Ausgabe sehen:
abc
123
Wenn a.php eine Datei schreibt, sind die Daten offensichtlich zu groß und es dauert zu lange, bis b.php unvollständige Daten liest Ändern Sie b.php in:

Code kopieren Der Code lautet wie folgt:
$file = " temp.txt";
$fp = fopen($file, 'r');
if(flock($fp, LOCK_EX)) {
echo fread($ fp, 100);
flock($fp, LOCK_UN); sonst{
echo „Datei sperren fehlgeschlagen...“; >?>


Führen Sie nach dem Ausführen von a.php sofort b.php aus. Sie können feststellen, dass b.php wartet, bis a.php abgeschlossen ist (d. h. nach 10 Sekunden), bevor es angezeigt wird :
abc
123
Lesen Die Daten sind vollständig, aber die Zeit ist zu lang. Er muss warten, bis die Schreibsperre aufgehoben wird, bevor er Änderungen an b.php vornimmt.
Ändern Sie b.php wie folgt:




Kopieren Sie den Code
flock ($fp, LOCK_UN); else{
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie gehe ich mit Dateisperren im Dateisystem und Problemen bei der prozessübergreifenden Dateifreigabe für gleichzeitige Dateien in der Go-Sprache um? Wie gehe ich mit Dateisperren im Dateisystem und Problemen bei der prozessübergreifenden Dateifreigabe für gleichzeitige Dateien in der Go-Sprache um? Oct 09, 2023 pm 05:53 PM

Einführung in Dateisperren im Dateisystem und Probleme bei der prozessübergreifenden Dateifreigabe beim Umgang mit gleichzeitigen Dateien in der Go-Sprache: In der Go-Sprache müssen wir uns häufig mit dem gleichzeitigen Zugriff auf Dateien befassen, einschließlich Dateisperren im Dateisystem und prozessübergreifender Dateifreigabe. In diesem Artikel wird erläutert, wie Sie mit der Go-Sprache diese Probleme lösen können, und es werden spezifische Codebeispiele bereitgestellt. 1. Dateisystem-Dateisperre Wenn mehrere gleichzeitige Programme gleichzeitig auf dieselbe Datei zugreifen, können wir Dateisystem-Dateisperren zur Synchronisierung verwenden, um Rennbedingungen und Dateninkonsistenzen zu vermeiden. Go-Sprache bietet s

Befehle zum Sperren von Dateien unter Linux: flock, fcntl, lockfile, flockfile Ausführliches Tutorial! Befehle zum Sperren von Dateien unter Linux: flock, fcntl, lockfile, flockfile Ausführliches Tutorial! Feb 23, 2024 pm 09:01 PM

Unter Linux gibt es mehrere häufig verwendete Befehle zum Sperren von Dateien, darunter flock, fcntl, lockfile und flockfile. Diese Befehle werden verwendet, um sich gegenseitig ausschließenden Zugriff auf Dateien in einer Multiprozess- oder Multithread-Umgebung zu ermöglichen. Hier finden Sie eine ausführliche Anleitung zu diesen Befehlen: flock-Befehl: Der flock-Befehl kann in Shell-Skripten verwendet werden, um eine exklusive Sperrung von Dateien durchzuführen. Verwenden Sie die folgende Syntax, um eine Datei zu sperren: flock [Optionen] Dateiname-Befehl Um beispielsweise eine Datei mit dem Namen file.txt zu sperren und den Befehl auszuführen, können Sie den folgenden Befehl ausführen: flockfile.txtls – Der Befehl lflock sperrt die Datei während des Ausführung des Befehls und führt den Befehl aus. Die Sperre wird automatisch aufgehoben, nachdem der Befehl abgeschlossen ist. fcnt

Dateisperre in PHP Dateisperre in PHP May 23, 2023 am 08:15 AM

PHP ist eine weit verbreitete Programmiersprache, die zur Entwicklung einer Vielzahl von Webanwendungen, einschließlich der Dateiverarbeitung, verwendet wird. In diesen Webanwendungen ist es manchmal notwendig, den gleichzeitigen Zugriff auf dieselbe Datei zu vermeiden, um Datenkonflikte zu vermeiden. Die Dateisperre ist eine Lösung für den gleichzeitigen Zugriff. Eine Dateisperre ist ein Mechanismus, der verhindert, dass mehrere Prozesse oder Threads gleichzeitig auf dieselbe Datei zugreifen. Wenn ein Prozess eine Datei sperrt, können andere Prozesse nicht auf die Datei zugreifen, bis die Sperre aufgehoben wird. Durch die Verwendung dieser Sperre wird sichergestellt, dass die Datei

Das Prinzip und die Anwendung der Dateisperre in Golang Das Prinzip und die Anwendung der Dateisperre in Golang Feb 29, 2024 am 09:54 AM

Das Prinzip und die Anwendung der Dateisperre in Golang. Im Betriebssystem ist die Dateisperre ein Mechanismus, der dazu dient, Dateien oder Ressourcen vor dem gleichzeitigen Zugriff oder der Änderung durch mehrere Prozesse zu schützen. In Golang kann die Datenstruktur im Speicher mithilfe der vom Synchronisierungspaket bereitgestellten Mutex-Sperre gesperrt werden. Wenn jedoch mehrere Prozesse am Lesen und Schreiben derselben Datei beteiligt sind, müssen Dateisperren verwendet werden, um die Datensicherheit sicherzustellen Sicherheit. Für die Art der Dateisperre in Golang können Sie das F der Dateistruktur verwenden, die vom Betriebssystempaket bereitgestellt wird.

Erweiterte Java-Dateioperationstechniken: Verbessern Sie die Entwicklungseffizienz Erweiterte Java-Dateioperationstechniken: Verbessern Sie die Entwicklungseffizienz Feb 27, 2024 pm 12:25 PM

1. Beim effizienten Lesen von Dateien wird BufferedReader/BufferedWriter verwendet, um die Lese- und Schreibeffizienz zu verbessern: BufferedReader und BufferedWriter sind effiziente Zeichenströme, die jeweils eine Textzeile lesen oder schreiben können, was effizienter ist als die direkte Verwendung von InputStream oder OutputStream. BufferedReaderreader=newBufferedReader(newFileReader("file.txt"));BufferedWriterwriter=newBufferedWriter(newFileWriter("

So verwenden Sie Dateisperren, um die Datensicherheit in Golang zu gewährleisten So verwenden Sie Dateisperren, um die Datensicherheit in Golang zu gewährleisten Feb 28, 2024 pm 01:12 PM

Titel: Wie man Dateisperren verwendet, um die Datensicherheit in Golang zu gewährleisten. Im Programmierprozess ist die Gewährleistung der Datensicherheit ein entscheidender Teil. Um die Atomizität und Thread-Sicherheit von Datenvorgängen zu gewährleisten, verwenden wir in Golang häufig Dateisperren, um die Zugriffskontrolle auf gemeinsam genutzte Ressourcen zu implementieren. Dateisperren stellen einen sich gegenseitig ausschließenden Zugriff zwischen Prozessen auf Betriebssystemebene sicher und vermeiden so Datenwettlaufbedingungen und Ressourcenkonflikte. In diesem Artikel wird erläutert, wie Dateisperren zur Gewährleistung der Datensicherheit in Golang verwendet werden, und es werden spezifische Codebeispiele bereitgestellt. 1.Dokumente

Die Bedeutung und Verwendung von Dateisperren in der Golang-Programmierung Die Bedeutung und Verwendung von Dateisperren in der Golang-Programmierung Feb 28, 2024 pm 04:15 PM

Die Bedeutung und Verwendung von Dateisperren in der Golang-Programmierung In der Multithread-Programmierung sind Lese- und Schreibvorgänge für Dateien sehr häufig. Wenn in einem gleichzeitigen Programm mehrere Goroutinen gleichzeitig eine Datei lesen und schreiben, kann es leicht zu einer Verwirrung des Dateiinhalts oder zu Datenverlust kommen. Um diese Situation zu vermeiden, können wir Dateisperren verwenden, um die Atomizität und Sicherheit von Dateivorgängen sicherzustellen. In diesem Artikel werden die Bedeutung von Dateisperren in der Golang-Programmierung und spezifische Verwendungsmethoden vorgestellt und einige Codebeispiele bereitgestellt. dokumentieren

Best Practices für die Implementierung von Dateisperren mit Golang Best Practices für die Implementierung von Dateisperren mit Golang Feb 28, 2024 pm 12:12 PM

Best Practices für die Verwendung von Golang zur Implementierung von Dateisperren Während der Entwicklung stoßen wir häufig auf Situationen, in denen Dateien gesperrt werden müssen, um sicherzustellen, dass Dateien ordnungsgemäß funktionieren, wenn mehrere Goroutinen oder Prozesse gleichzeitig darauf zugreifen. In Golang ist die Implementierung der Dateisperre nicht kompliziert. In diesem Artikel werden die Best Practices für die Implementierung der Dateisperre mit Golang vorgestellt, einschließlich spezifischer Codebeispiele. Die Rolle der Dateisperre Die Dateisperre ist ein Mechanismus zum Sperren von Dateien auf Betriebssystemebene. Sie kann uns dabei helfen, sicherzustellen, dass auf Dateien gleichzeitig zugegriffen wird.

See all articles