Heim > Artikel > Backend-Entwicklung > So sperren und entsperren Sie Dateien in PHP
In Projekten werden im Allgemeinen Protokolle verwendet, z. B. Datenbankabfrageprotokolle, Zugriffsprotokolle und Protokolle für die Rückgabe von externen Schnittstellenanforderungen. In diesem Artikel werden Ihnen hauptsächlich die Methoden zum Sperren und Entsperren von Dateisperren in PHP sowie Beispiele in diesem Formular vorgestellt Analysiert die Funktionen, Implementierungsmethoden und zugehörigen Vorsichtsmaßnahmen von PHP zum Sperren und Entsperren von Dateien. Freunde, die es benötigen, können darauf verweisen.
$file = 'log.txt'; $fp = fopen($file, 'a+'); if(!is_writable($file)){ die("The $file is not writable!"); } fwrite($fp, 'here'); fclose($fp);
Eine Website wird jedoch nicht nur von einem Benutzer gleichzeitig besucht. Sie wird angezeigt, wenn mehrere Benutzer sie gleichzeitig besuchen Das Problem besteht darin, dass, wenn mehrere Prozesse dieselbe Ressource verwenden, der vorherige Prozess mit dem Schreiben beginnt, bevor der nachfolgende Prozess mit dem Schreiben beginnt, sodass das endgültige Protokoll fehlerhaft ist. In diesem Fall werden Sperren verwendet. Während des Dateisperrzeitraums werden andere Prozesse die Datei nicht ändern. Sie können nur ausgeführt werden, wenn die Datei entsperrt ist. Der Text lautet wie folgt:
$file = 'log.txt'; $fp = fopen($file, 'a+'); if(!is_writable($file)){ exit("The $file is not writable!"); } flock($fp, LOCK_EX);// 加锁 fwrite($fp, 'here'); flock($fp, LOCK_UN);// 解锁 fclose($fp);
Wenn Sie das Beispiel testen möchten, bei dem andere Prozesse die Datei während des Dateisperrzeitraums nicht bearbeiten können, können Sie die unten angegebene Demo verwenden
log.php
$file = 'log.txt'; $fp = fopen($file, 'a+'); if(!is_writable($file)){ exit("The $file is not writable!"); } flock($fp, LOCK_EX); fwrite($fp, 'here'); sleep(10); flock($fp, LOCK_UN); fclose($fp);
test.php
$file = 'lock.txt'; $fp = fopen($file, 'a'); fwrite($fp, 'good'); // 在sleep期间写不进去 fclose($fp); // 或是直接使用下面的这个例子,发现在sleep期间打印是个空值 //var_dump(file_get_contents($file));
Beim Testen Führen Sie zuerst log.php und dann test.php aus. Sie werden feststellen, dass test.php im Ruhezustand nicht ausgeführt werden kann.
Verwandte Empfehlungen:
PHP implementiert die gleichzeitige Rush-Funktion durch Sperren
Methode zur Implementierung der MySQL-Anweisungssperre
Mysql-Transaktionsverarbeitung mit hoher Parallelität und Sperrung
Das obige ist der detaillierte Inhalt vonSo sperren und entsperren Sie Dateien in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!