So sperren und entsperren Sie Dateien in PHP

小云云
Freigeben: 2023-03-20 07:52:01
Original
1533 Leute haben es durchsucht

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

test.php


$file = 'lock.txt';
$fp = fopen($file, 'a');
fwrite($fp, 'good'); // 在sleep期间写不进去
fclose($fp);
// 或是直接使用下面的这个例子,发现在sleep期间打印是个空值
//var_dump(file_get_contents($file));
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!