Heim > Backend-Entwicklung > PHP-Problem > Fragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung

Fragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung

WBOY
Freigeben: 2023-03-13 16:48:01
Original
2298 Leute haben es durchsucht

Im vorherigen Artikel „So löschen Sie ein Verzeichnis in PHP (detailliertes Beispiel)“ wurden die relevanten Kenntnisse zum Löschen von Verzeichnissen in PHP ausführlicher vorgestellt. Das Löschen eines nicht leeren Verzeichnisses ist etwas komplizierter. In diesem Artikel werfen wir einen Blick auf die relevanten Kenntnisse zum Sperren von Dateien in PHP. Ich hoffe, dass es für alle hilfreich ist!

Fragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung

In früheren Artikeln haben wir viel über Kenntnisse im Zusammenhang mit der Dateiverarbeitung gelernt, z. B. über das Schreiben von Dateien, das Lesen von Dateien usw. Eine davon heißt Dateisperre. Das Verständnis der Dateisperre ist möglicherweise etwas abstrakt, da der Dateisperrmechanismus beim Öffnen einer Datei im Allgemeinen keine Auswirkung hat.

Was genau ist eine Dateisperre? Wofür wird er verwendet? Warum verwenden wir Dateisperren? Wie nutzen wir es? Lassen Sie uns mit diesen Fragen einen Blick auf das relevante Wissen über Dateisperren werfen.

Was ist eine Dateisperre?

Die erste Frage ist, einfach gesagt, die Dateisperre ist ein Dateischutzmechanismus. Es kann verstanden werden, dass jemand, der diese Datei liest oder schreibt, bereits einen Schutzmechanismus für eine Datei verwendet Beispiel, um zu verhindern, dass jemand anderes sie manipuliert, während die Datei manipuliert wird.

Der Zweck der Dateisperre

Wenn eine Datei eine Dateisperre hat und ich diese Datei verwende, kann nur ich an der Datei arbeiten, es sei denn, die Dateisperre wird aufgehoben, andere können nicht eingreifen, was ich damit mache Datei. Um Datenfehler zu vermeiden, darf nur eine Person gleichzeitig arbeiten.

Wenn keine Dateisperre vorhanden ist und mehrere Personen dieselbe Datei bearbeiten, kann es sehr wahrscheinlich zu Datenfehlern oder Asymmetrien kommen. Daher ist die Verwendung von Dateisperren erforderlich. Dafür werden Dateien verwendet und warum Dateisperren verwendet werden.

So verwenden Sie die Dateisperre: Funktion flock() flock()函数

接下来我们看一下怎样去使用这个PHP文件锁,首先我们需要知道,我们在打开文件后可以通过flock()函数来对文件进行上锁。

flock()函数的基本语法格式如下:

flock(resource $handle, int $operation[, int &$wouldblock])
Nach dem Login kopieren

其中需要注意的是:

参数$handle表示的是文件系统的指针,也就是通过fopen()创建的文件资源;参数$operation表示的是文件锁类型;参数$wouldblock是一个可选参数,他表示的是可以将其设置为1或者true,这样的话文件锁定时就会堵塞其它进程。

下面我们来介绍一下参数$operation的类型:

  • LOCK_EX表示的是写锁,也就是在写入的时候是写锁状态,其他人不能写也没法读,只有等解锁后才能恢复。

  • LOCK_SH表示的是共享锁,理解为别人只能读,但是没法写。解锁后回复。

  • LOCK_UN表示的是解除上面两种状态。也就是解锁。

  • LOCK_NB

  • Als nächstes schauen wir uns an, wie Sie diese PHP-Dateisperre verwenden. Zuerst müssen wir wissen, dass wir flock( übergeben können. )-Funktion zum Sperren der Datei.


flock() Das grundlegende Syntaxformat der Funktion ist wie folgt:

<?php
header("Content-Type: text/html;charset=utf-8");    //设置字符编码
$file = "test.txt";
$handle = fopen($file,&#39;w+&#39;); //打开文件
if(flock($handle, LOCK_EX|LOCK_NB)){  //给文件上锁
    fwrite($handle, &#39;被锁住了&#39;);  //写入数据
    flock($handle, LOCK_UN);  //释放文件锁
}else{
    echo "锁失败了";
}
fclose($handle);//关闭文件
readfile($file);//读取文件内容
?>
Nach dem Login kopieren

Es ist zu beachten, dass:

Fragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung

Der Parameter $handle darstellt der Dateisystemzeiger, d. h. die durch fopen() erstellte Dateiressource; der Parameter $operation stellt den Dateisperrtyp dar; code> ist ein Wählen Sie den Parameter aus, was bedeutet, dass er auf 1 oder true gesetzt werden kann, sodass andere Prozesse blockiert werden, wenn die Datei gesperrt ist.

Fragen und Antworten zur Dateisperrung bei der PHP-DateiverarbeitungLassen Sie uns den Typ des Parameters $operation vorstellen:

  • LOCK_EX

    stellt eine Schreibsperre dar. Das heißt Beispielsweise befindet es sich beim Schreiben in einem Schreibsperrzustand. Andere können nicht schreiben oder lesen. Sie können erst nach dem Entsperren wiederhergestellt werden.

  • LOCK_SH stellt eine gemeinsame Sperre dar, was bedeutet, dass andere nur lesen, aber nicht schreiben können. Nach dem Entsperren antworten. 🎜🎜
  • 🎜🎜LOCK_UN🎜 bedeutet, die beiden oben genannten Zustände freizugeben. Das heißt, entsperrt. 🎜🎜
  • 🎜🎜LOCK_NB🎜 bedeutet, dass, wenn die Datei nach dem Lesen oder Schreiben gesperrt wird, sofort eine Benachrichtigung zurückgegeben wird, dass die Datei, auf die zugegriffen wird, gesperrt ist. 🎜🎜🎜🎜Als nächstes schauen wir uns das Beispiel an. Das Beispiel sieht wie folgt aus: 🎜🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜Die Daten werden in test.txt geschrieben: 🎜🎜🎜🎜🎜Wir sind fertig mit dem Das obige Beispiel führt einen Dateisperrvorgang für die Datei durch. Verwenden Sie nach Abschluss des Vorgangs die Funktion fclose(), um die Datei zu schließen, und lesen Sie dann den Dateiinhalt über die Funktion readfile(). Zu beachten ist: 🎜🎜Wenn wir die Funktion flock() verwenden, wird die Datei gesperrt. Wenn wir möchten, dass die Datei automatisch entsperrt wird, müssen wir nur die Funktion fclose() aufrufen. Wenn wir Code schreiben, ist es besser, nach Verwendung der Dateisperre eine Entsperranweisung hinzuzufügen. 🎜🎜Bei Interesse können Sie auf „🎜PHP-Video-Tutorial🎜“ klicken, um mehr über PHP-Kenntnisse zu erfahren. 🎜

Das obige ist der detaillierte Inhalt vonFragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung. 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