Heim > Artikel > Backend-Entwicklung > Fragen und Antworten zur Dateisperrung bei der PHP-Dateiverarbeitung
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!
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])
其中需要注意的是:
参数$handle
表示的是文件系统的指针,也就是通过fopen()
创建的文件资源;参数$operation
表示的是文件锁类型;参数$wouldblock
是一个可选参数,他表示的是可以将其设置为1
或者true
,这样的话文件锁定时就会堵塞其它进程。
下面我们来介绍一下参数$operation的类型:
LOCK_EX
表示的是写锁,也就是在写入的时候是写锁状态,其他人不能写也没法读,只有等解锁后才能恢复。
LOCK_SH
表示的是共享锁,理解为别人只能读,但是没法写。解锁后回复。
LOCK_UN
表示的是解除上面两种状态。也就是解锁。
LOCK_NB
flock()
Das grundlegende Syntaxformat der Funktion ist wie folgt:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = "test.txt"; $handle = fopen($file,'w+'); //打开文件 if(flock($handle, LOCK_EX|LOCK_NB)){ //给文件上锁 fwrite($handle, '被锁住了'); //写入数据 flock($handle, LOCK_UN); //释放文件锁 }else{ echo "锁失败了"; } fclose($handle);//关闭文件 readfile($file);//读取文件内容 ?>Es ist zu beachten, dass:
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.
Lassen 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!