Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie die PHPflock-Dateisperre

So verwenden Sie die PHPflock-Dateisperre

墨辰丷
墨辰丷Original
2018-06-09 11:22:281582Durchsuche

Dieser Artikel stellt ihn hauptsächlich vor. Ich hoffe, dass er für alle hilfreich ist.

Das Beispiel in diesem Artikel beschreibt, wie PHP Flock verwendet, um die Dateisperre zu implementieren. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Die Erklärung von Flock in der offiziellen Dokumentation lautet: flock() ermöglicht Ihnen die Implementierung eines einfachen Lese-/Schreibmodells, das auf jeder Plattform verwendet werden kann (einschließlich der meisten Unix-Derivate und sogar Windows). . Wenn die Sperre blockiert (im Falle des EWOULDBLOCK-Fehlercodes), setzen Sie den optionalen dritten Parameter auf TRUE. Sperrvorgänge können auch durch fclose() aufgehoben werden (wird auch automatisch aufgerufen, wenn die Codeausführung abgeschlossen ist).

Einfach ausgedrückt geht es darum, eine Datei zu sperren, sodass mehrere Prozesse nicht auf die Datei zugreifen können, wodurch Konflikte verhindert werden. Zum Beispiel:

<?php 
  $file = fopen("test.txt","w+"); 
  if (flock($file,LOCK_EX)) 
  { 
   fwrite($file,"Write something"); 
   flock($file,LOCK_UN); 
  } 
  else 
  { 
    echo "Error locking file!"; 
  } 
  fclose($file); 
?>

Erklärung:

1. Die Bedeutung dieses Codes besteht darin, die Datei test.txt im Lese- und Schreibmodus zu öffnen In der Datei test.txt wird der Code flock($file,LOCK_EX) ausgeführt, der ausschließlich die Datei test.txt sperrt (die Datei kann nur von diesem Benutzer gelesen und geschrieben werden). Benutzer, die auf die Datei zugreifen möchten, werden blockiert, bis erstere die Datei schließt (die Sperre aufhebt).

2. Wenn der Code in flock($file,LOCK_EX+LOCK_NB) geändert wird, bedeutet dies, dass beim Sperren direkt ein Fehler zurückgegeben wird. Wenn dann ein neuer Benutzer auf die Datei zugreift, wird „Fehler beim Sperren der Datei“ angezeigt. wird ausgegeben.

3. Die Syntax dieser Funktion ist flock(file,lock,block), wobei file erforderlich ist. Gibt eine geöffnete Datei an, die gesperrt oder freigegeben werden soll. Schloss erforderlich. Gibt an, welcher Sperrtyp verwendet werden soll. Block ist optional. Wenn auf 1 oder true gesetzt, werden beim Sperren andere Prozesse blockiert.

Zum Beispiel: Bitte schreiben Sie einen Teil PHP-Code, um sicherzustellen, dass mehrere Prozesse gleichzeitig erfolgreich dieselbe Datei schreiben können

function writeData($path, $mode,$data) 
{ 
  $fp = fopen($path, $mode);  
  $retries = 0; 
  $max_retries = 100;  
  do{ 
    if ($retries > 0)  
    { 
      usleep(rand(1, 10000)); 
    } 
    $retries += 1; 
  }while (!flock($fp, LOCK_EX) and $retries<= $max_retries);  
  if ($retries == $max_retries)  
  { 
    return false; 
  } 
  fwrite($fp, "$data\n"); 
  flock($fp, LOCK_UN); 
  fclose($fp);  
  return true;  
}

Zusammenfassung: Das Obige ist das Ich hoffe, dass der gesamte Inhalt dieses Artikels für das Studium aller hilfreich sein kann.

Verwandte Empfehlungen:

PHP-Methoden zum Bearbeiten von Datumsangaben und Zeichenfolgen

PHP-Tool für das Zwischenspeichern von Webseiten. Klasse Code und Verwendung

PHP steuert alle Hintergrundfunktionsaufrufe basierend auf Ajax

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die PHPflock-Dateisperre. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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