Maison développement back-end tutoriel php Explication détaillée des verrous de lecture et d'écriture des fichiers PHP

Explication détaillée des verrous de lecture et d'écriture des fichiers PHP

Aug 21, 2017 pm 02:14 PM
php 文件 读写

Les problèmes liés à la lecture et à l'écriture existeront toujours. Le verrouillage des fichiers est conçu pour résoudre ce problème. En fait, il s'agit d'un simple sémaphore. La corrélation lecture-écriture fait référence au conflit aléatoire de données de fichier provoqué par la lecture et l'écriture simultanées de fichiers. Afin de savoir clairement quand et quelles opérations ont été utilisées pour modifier ou lire les données du fichier, il est nécessaire de sérialiser, atomiser et synchroniser les opérations afin que les utilisateurs puissent savoir exactement quelles données se trouvent dans le fichier à quel moment. File Lock est l'un de ces outils.

Les systèmes de fichiers ont généralement deux types de verrous, les verrous partagés et les verrous exclusifs, qui peuvent également être appelés verrous en lecture et verrous en écriture.

Caractéristiques des verrous du système de fichiers :

Un fichier ne peut avoir qu'un seul verrou lorsqu'il est ouvert, ce qui signifie que pas plus de deux verrous peuvent être attribués à un fichier en même temps.

Les utilisateurs qui lisent et écrivent des fichiers verrouillés peuvent détenir ce verrou, c'est-à-dire que les utilisateurs qui détiennent ce verrou peuvent effectuer les opérations correspondantes sur le fichier, telles que la lecture ou l'écriture. L'utilisateur peut demander le verrouillage d'un fichier. Si le fichier est initialement déverrouillé, le système crée un verrou pour le fichier avant de demander le verrouillage, puis le demandeur le détient.

Règles de maintien des verrous : Si ce fichier possède déjà un verrou en lecture (partagé), les autres utilisateurs ne peuvent pas attribuer un verrou exclusif ou un verrou en lecture seule au fichier, mais ils peuvent détenir le verrou, c'est-à-dire Par exemple, d'autres utilisateurs peuvent lire le fichier, mais tant que le fichier est verrouillé, aucun utilisateur ne peut y écrire. Si le fichier possède déjà un verrou exclusif et est détenu par un utilisateur, aucun utilisateur ne peut à nouveau détenir le verrou à moins que le détenteur ne le déverrouille.

Il y a un concept important à retenir : le fonctionnement du fichier lui-même n'a rien à voir avec le verrouillage. Que le fichier soit verrouillé ou non, l'utilisateur peut effectuer n'importe quelle opération normale sur le fichier à volonté. , mais le fonctionnement Le système vérifiera la serrure et donnera différents traitements à différentes situations. Par exemple, dans une situation sans verrouillage, n'importe qui peut lire et écrire n'importe quel fichier en même temps. Bien entendu, il est très probable que le contenu lu et écrit soit erroné - notez que seul le contenu est erroné, ainsi que l'opération. je n'aurai pas tort. Après le verrouillage, certaines opérations seront refusées dans certaines circonstances. Le rôle des verrous de fichiers n'est pas de protéger les fichiers et les données eux-mêmes, mais d'assurer la synchronisation des données. Par conséquent, les verrous de fichiers ne sont véritablement efficaces que pour l'utilisateur qui détient le verrou, et seulement si tous les utilisateurs utilisent le même et identique. manière d'utiliser le fichier. Le verrouillage de fichier ne peut être efficace pour tous les utilisateurs que si la limite de verrouillage fonctionne sur le fichier. Sinon, tant qu'il y a une exception, toute la fonction de verrouillage de fichier sera détruite. Par exemple, si tout le monde suit les étapes d'ouverture d'un fichier, de verrouillage, de lecture et d'écriture, de déverrouillage et de fermeture du fichier, il n'y aura aucun problème avec les opérations de chacun, car sur la base des principes d'allocation et de conservation des verrous de fichiers, les données dans le fichier La mise à jour existe comme une opération atomique et est indivisible, elle est donc également synchrone et sûre. Mais si une personne ne franchit pas cette étape, elle aura alors des problèmes de lecture et d’écriture, soit elle ne peut pas lire avec précision, soit elle ne peut pas écrire, etc.

Sur la base des principes ci-dessus, il convient de déterminer si les données lues sont verrouillées. De manière générale, le verrouillage exclusif est la seule opération lors de l'écriture de données. Il garantit que les données écrites dans le fichier sont correctes. Lorsque le fichier est verrouillé, les autres utilisateurs ne peuvent pas obtenir le verrou et n'ont donc aucun droit d'effectuer aucune opération. Lors de la lecture, cela dépend de la situation spécifique. Dans la plupart des cas, s'il n'y a pas besoin de données particulièrement précises ou sensibles, il n'est pas nécessaire de verrouiller, car le verrouillage prend du temps et des ressources. Il ne faut pas de temps à une seule personne pour l'appliquer. pour et maintenez le verrou. Il y a plus de problèmes. Le plus important est que si le fichier doit être mis à jour, s'il est verrouillé sur un verrou en lecture seule, l'écriture ne sera pas possible car les utilisateurs qui souhaitent écrire ne le feront pas. obtenez le verrou exclusif. Si en même temps, s'il y a trop de personnes qui demandent à détenir le verrou en lecture seule, le verrou exclusif peut ne jamais être demandé. Cela signifie que le fichier peut ne pas être écrit pendant une longue période, ce qui apparaît. être très lent. D'une manière générale, la possibilité d'écrire des fichiers est relativement rare et plus importante, donc le verrouillage exclusif est principalement effectué dans la plupart des cas. Alors, où sont utilisés les verrous en lecture seule ? Les verrous en lecture seule ne sont en réalité utiles qu'à l'utilisateur lui-même. Les verrous en lecture seule garantissent que les données lues par l'utilisateur sont les données réelles lues dans le fichier, plutôt que des données sales appelées « sales ». En fait, cela vise toujours les erreurs d'utilisation des fichiers par d'autres utilisateurs qui n'utilisent pas de verrous. Si le fichier est verrouillé, les autres utilisateurs ne doivent pas nécessairement utiliser le verrou pour lire et écrire le fichier. ils ne pourront pas accéder au fichier verrouillé. L'opération peut ne pas être valide. L'utilisateur détenant le verrou de lecture peut être sûr que lorsqu'il lit les données, ce qu'il lit provient du fichier réel et non des données qui ont été écrasées. en même temps.

Par conséquent, il devrait être une évidence d'appliquer un verrou exclusif lors de l'écriture pour garantir que les données ne se tromperont pas à ce moment-là. Si vous ne demandez pas de verrou partagé, les données lues peuvent être incorrectes, mais cela n'aura aucun impact sur le fichier lui-même. L'impact est uniquement sur l'utilisateur. Les données lues après avoir demandé un verrou partagé doivent être réelles. données dans le fichier lors de sa lecture. Si ce n'est pas pour garantir l'exactitude des données, le verrou partagé n'a pas besoin d'être ajouté. Au mieux, il sera relu. Si vous le lisez pour l'écrire, il l'est. il est préférable d'ajouter directement un verrou exclusif. Il n'est pas nécessaire d'utiliser un verrou partagé.

Un autre point à souligner est que le verrouillage des fichiers n'est efficace que pour les utilisateurs qui l'utilisent et l'utilisent conformément aux règles. Sinon, vous utilisez le vôtre et j'utilise le mien. Certains l'utilisent et d'autres non. être gâché et des erreurs se produiront toujours pour le même fichier, ce n'est que si tout le monde utilise les mêmes règles pour utiliser les verrous de fichiers que nous pouvons garantir que chaque utilisateur n'aura pas d'erreurs de lecture ou d'écriture lors du partage du fichier.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles