Maison > développement back-end > Problème PHP > Questions et réponses sur le verrouillage de fichiers dans le traitement de fichiers PHP

Questions et réponses sur le verrouillage de fichiers dans le traitement de fichiers PHP

WBOY
Libérer: 2023-03-13 16:48:01
original
2297 Les gens l'ont consulté

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 !

Questions et réponses sur le verrouillage de fichiers dans le traitement de fichiers PHP

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])
Copier après la connexion

其中需要注意的是:

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

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

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

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

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

  • LOCK_NB

  • Voyons ensuite comment utiliser ce verrouillage de fichier PHP. Nous devons d'abord savoir que nous pouvons le transmettre après. ouvrir la fonction file flock() pour verrouiller le fichier.


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,&#39;w+&#39;); //打开文件
if(flock($handle, LOCK_EX|LOCK_NB)){  //给文件上锁
    fwrite($handle, &#39;被锁住了&#39;);  //写入数据
    flock($handle, LOCK_UN);  //释放文件锁
}else{
    echo "锁失败了";
}
fclose($handle);//关闭文件
readfile($file);//读取文件内容
?>
Copier après la connexion

A noter que :

Questions et réponses sur le verrouillage de fichiers dans le traitement de fichiers PHP

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é.

Questions et réponses sur le verrouillage de fichiers dans le traitement de fichiers PHPIntroduisons 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal