Detaillierte Einführung in die Grundlagen der PHP-Flockdatei lock_php
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
$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.
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:
}
fclose($ fp);
?>
b.php
Code kopieren
Der Code lautet wie folgt:
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:
$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.
Kopieren Sie den Code
fclose ($fp );
?>
Nachdem Sie a.php ausgeführt haben, führen Sie sofort b.php aus und Sie können die Ausgabe sehen:
Sperrdatei fehlgeschlagen…
Beweisen Sie, dass die Sperrdatei Der Fehlerstatus kann anstelle von „Es dauert lange zu warten“ zurückgegeben werden, wie oben beschrieben.
Fazit des Herausgebers von Script House:
Es wird empfohlen, beim Zwischenspeichern von Dateien relevante Sperren auszuwählen, da es sonst zu unvollständigem Lesen oder wiederholtem Schreiben von Daten kommen kann.
file_get_contents kann die Sperre anscheinend nicht auswählen. Ich weiß nicht, welche Sperre standardmäßig verwendet wird. Die Ausgabe, die durch Nichtsperren erzielt wird, ist jedoch dieselbe wie bei unvollständigen Daten.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.