Dans l'article précédent "Comment supprimer un répertoire en PHP (exemple détaillé)", les connaissances pertinentes sur la suppression de répertoires en PHP ont été présentées en détail. La suppression d'un répertoire non vide est légèrement plus compliquée. Dans cet article, nous examinerons les connaissances pertinentes sur le verrouillage de fichiers en PHP. J'espère que cela sera utile à tout le monde !
Dans les articles précédents, nous avons beaucoup appris sur les connaissances liées au traitement des fichiers, telles que l'écriture de fichiers, la lecture de fichiers, etc. L'une d'entre elles s'appelle le verrouillage de fichiers. La compréhension du verrouillage de fichiers peut être un peu abstraite, car le mécanisme de verrouillage de fichiers n'a généralement aucun effet lors de l'ouverture d'un fichier.
Alors, qu'est-ce qu'un verrouillage de fichier exactement ? A quoi sert-il ? Pourquoi utilisons-nous des verrous de fichiers ? Comment l’utilisons-nous ? Avec ces questions, examinons les connaissances pertinentes sur les verrous de fichiers.
Qu'est-ce que le verrouillage de fichiers ?
La première question est, en termes simples, le verrouillage de fichier est un mécanisme de protection de fichier. On peut comprendre que lorsque vous lisez ou écrivez ce fichier, c'est-à-dire que quelqu'un opère déjà sur le fichier. fichier, par exemple pour éviter d'être manipulé par un autre pendant que le fichier est manipulé.
Le but du verrouillage de fichier
Si un fichier a un verrouillage de fichier, lorsque j'utilise ce fichier, je suis le seul à pouvoir opérer sur le fichier. À moins que le verrouillage de fichier ne soit libéré, les autres ne peuvent pas intervenir sur ce que je fais avec le fichier. déposer. Une seule personne peut être autorisée à opérer en même temps pour éviter les erreurs de données.
S'il n'y a pas de verrouillage de fichier, plusieurs personnes exploitant le même fichier provoqueront très probablement des erreurs de données ou une asymétrie, il est donc nécessaire d'utiliser des verrouillages de fichiers. C'est à cela que servent les fichiers et pourquoi les verrous de fichiers sont utilisés.
Comment utiliser le verrouillage de fichier : fonction 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()
Le format de syntaxe de base de la fonction est le suivant :
<?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);//读取文件内容 ?>
Le paramètre $handle
représente le pointeur du système de fichiers, c'est-à-dire la ressource de fichier créée via fopen()
; le paramètre $operation
représente le type de verrouillage de fichier $wouldblock ; code> est un paramètre Sélectionnez le, ce qui signifie qu'il peut être défini sur <code>1
ou true
, afin que les autres processus soient bloqués lorsque le fichier est verrouillé.
Introduisons le type de paramètre $opération :
LOCK_EX
représente un verrou en écriture, c'est-à-dire disons, il est dans un état de verrouillage en écriture lors de l'écriture. Les autres ne peuvent pas écrire ou lire. Ils ne peuvent être restaurés qu'après déverrouillage.
LOCK_SH
représente un verrou partagé, ce qui signifie que les autres peuvent uniquement lire, mais ne peuvent pas écrire. Répondez après le déverrouillage. 🎜🎜LOCK_UN
🎜 signifie libérer les deux états ci-dessus. Autrement dit, déverrouillé. 🎜🎜LOCK_NB
🎜 signifie que lorsque le fichier est verrouillé après une lecture ou une écriture, il renverra immédiatement une notification indiquant que le fichier accédé est verrouillé. 🎜🎜🎜🎜Regardons ensuite l'exemple, l'exemple est le suivant : 🎜🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜🎜Les données sont écrites dans test.txt : 🎜🎜🎜🎜🎜Nous en avons terminé avec le exemple ci-dessus Effectuez une opération de verrouillage de fichier sur le fichier. Une fois l'opération terminée, utilisez la fonction fclose() pour fermer le fichier, puis lisez le contenu du fichier via la fonction readfile() ; Ce qu'il faut noter est : 🎜🎜Lorsque nous utilisons la fonction flock(), le fichier est verrouillé. Si nous voulons que le fichier soit déverrouillé automatiquement, il suffit d'appeler la fonction fclose(). Lorsque nous écrivons du code, il est préférable d'ajouter une instruction de déverrouillage après avoir utilisé le verrouillage de fichier. 🎜🎜Si vous êtes intéressé, vous pouvez cliquer sur "🎜Tutoriel vidéo PHP🎜" pour en savoir plus sur les connaissances PHP. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!