Detaillierte Erläuterung des Problems mit der Lese-/Schreibsperre von PHP-Dateien

高洛峰
Freigeben: 2016-10-17 10:54:07
Original
1228 Leute haben es durchsucht

Es wird immer Probleme im Zusammenhang mit dem Lesen und Schreiben geben. Die Dateisperre soll dieses Problem lösen. Tatsächlich handelt es sich um ein einfaches Semaphor. Die Lese-Schreib-Korrelation bezieht sich auf den zufälligen Konflikt zwischen Dateidaten, der durch gleichzeitiges Lesen und Schreiben von Dateien verursacht wird. Um genau zu wissen, wann und welche Vorgänge zum Ändern oder Lesen der Daten in der Datei verwendet wurden, ist es notwendig, die Vorgänge zu serialisieren, zu atomisieren und zu synchronisieren, damit Benutzer genau wissen können, welche Daten sich zu welchem ​​Zeitpunkt in der Datei befinden. File Lock ist eines dieser Tools.

Dateisysteme verfügen im Allgemeinen über zwei Arten von Sperren: gemeinsame Sperren und exklusive Sperren, die auch als Lesesperren und Schreibsperren bezeichnet werden können.

Funktionen von Dateisystemsperren:

Eine Datei kann beim Öffnen nur eine Sperre haben, was bedeutet, dass einer Datei nicht mehr als zwei Sperren gleichzeitig zugewiesen werden können.

Benutzer, die gesperrte Dateien lesen und schreiben, können diese Sperre halten, d. h. Benutzer, die diese Sperre halten, können entsprechende Vorgänge an der Datei ausführen, z. B. Lesen oder Schreiben. Der Benutzer kann die Aufrechterhaltung einer Dateisperre beantragen. Wenn die Datei zunächst entsperrt ist, erstellt das System eine Sperre für die Datei, bevor sie die Aufrechterhaltung der Sperre beantragt, und der Antragsteller behält sie dann bei.

Regeln für das Halten von Sperren: Wenn diese Datei bereits über eine Lesesperre (gemeinsam genutzt) verfügt, können andere Benutzer der Datei keine exklusive Sperre oder eine Nur-Lese-Sperre zuweisen, aber sie können die Sperre halten, d. h Angenommen, andere Benutzer können die Datei lesen, aber solange die Datei gesperrt ist, kann kein Benutzer darauf schreiben. Wenn die Datei bereits über eine exklusive Sperre verfügt und von einem Benutzer gehalten wird, kann kein Benutzer die Sperre erneut halten, es sei denn, der Inhaber entsperrt sie.

Es ist ein wichtiges Konzept zu beachten: Der Vorgang der Datei selbst hat nichts mit der Sperre zu tun. Unabhängig davon, ob die Datei gesperrt ist oder nicht, kann der Benutzer nach Belieben jeden normalen Vorgang an der Datei ausführen , aber der Betrieb Das System überprüft die Sperre und behandelt unterschiedliche Situationen unterschiedlich. In einer Situation ohne Sperre kann beispielsweise jeder jede Datei gleichzeitig lesen und schreiben. Natürlich ist es sehr wahrscheinlich, dass der gelesene und geschriebene Inhalt falsch ist – beachten Sie, dass nur der Inhalt falsch ist und die Operation wird nicht falsch sein. Nach der Sperrung werden bestimmte Vorgänge unter bestimmten Umständen verweigert. Die Aufgabe von Dateisperren besteht nicht darin, die Dateien und Daten selbst zu schützen, sondern die Synchronisierung der Daten sicherzustellen. Daher sind Dateisperren nur dann wirklich wirksam für den Benutzer, der die Sperre besitzt, und nur dann, wenn alle Benutzer dasselbe und identisch verwenden Die Dateisperre kann nur dann für alle Benutzer wirksam werden, wenn die Sperre auf die Datei angewendet wird. Andernfalls wird die gesamte Dateisperrfunktion zerstört. Wenn beispielsweise jeder die Schritte zum Öffnen einer Datei, Sperren, Lesen und Schreiben, Entsperren und Schließen der Datei befolgt, treten bei allen Vorgängen keine Probleme auf, da die Daten auf der Grundlage der Zuweisungs- und Halteprinzipien von Dateisperren gespeichert werden Die Datei Das Update existiert als atomare Operation und ist unteilbar, sodass es auch synchron und sicher ist. Wenn jemand diesen Schritt jedoch nicht unternimmt, wird er Probleme beim Lesen und Schreiben haben, entweder kann er nicht richtig lesen oder er kann nicht schreiben usw.

Auf der Grundlage der oben genannten Grundsätze lohnt es sich, darüber zu sprechen, ob die gelesenen Daten gesperrt sind. Im Allgemeinen ist die exklusive Sperre der einzige Vorgang beim Schreiben von Daten. Sie stellt sicher, dass die in die Datei geschriebenen Daten korrekt sind. Wenn die Datei gesperrt ist, können andere Benutzer die Sperre nicht erhalten und haben daher kein Recht, einen Vorgang auszuführen. Beim Lesen kommt es auf die konkrete Situation an. Wenn keine besonders präzisen oder sensiblen Daten erforderlich sind, ist eine Sperrung nicht erforderlich, da die Beantragung einer Person Zeit und Ressourcen erfordert und halten Sie die Sperre aufrecht. Das Wichtigste ist, dass das Schreiben nicht möglich ist, wenn die Datei aktualisiert werden muss, da sie nicht geschrieben werden kann Wenn zu viele Personen gleichzeitig die Nur-Lese-Sperre beantragen, wird die Exklusivsperre möglicherweise nie beantragt. Dies bedeutet, dass die Datei möglicherweise längere Zeit nicht geschrieben wird sehr langsam sein. Im Allgemeinen ist die Möglichkeit zum Schreiben von Dateien relativ selten und wichtiger, sodass in den meisten Fällen keine ausschließliche Sperrung erforderlich ist. Wo werden also schreibgeschützte Sperren verwendet? Nur-Lese-Sperren sind eigentlich nur für den Benutzer selbst nützlich. Nur-Lese-Sperren stellen sicher, dass es sich bei den vom Benutzer gelesenen Daten um echte Daten handelt, die aus der Datei gelesen werden, und nicht um schmutzige Daten, die als „schmutzig“ bezeichnet werden. Tatsächlich zielt dies immer noch auf Fehlbedienungen an Dateien durch andere Benutzer ab, die keine Sperren verwenden. Wenn die Datei direkt gelesen und geschrieben wird, müssen andere Benutzer die Sperre nicht unbedingt verwenden. Sie können nicht auf die gesperrte Datei zugreifen. Der Benutzer, der die Lesesperre besitzt, kann sicher sein, dass es sich beim Lesen der Daten um die tatsächliche Datei handelt und nicht um die Daten, die überschrieben wurden gleichzeitig.

Daher sollte es selbstverständlich sein, beim Schreiben eine exklusive Sperre anzuwenden, um sicherzustellen, dass die Daten zu diesem Zeitpunkt nicht fehlerhaft sind. Wenn Sie keine gemeinsame Sperre beantragen, sind die gelesenen Daten möglicherweise falsch, haben jedoch keine Auswirkungen auf die Datei selbst. Die Auswirkungen wirken sich nur auf den Benutzer aus. Die nach der Beantragung einer gemeinsamen Sperre gelesenen Daten müssen real sein Wenn die Daten nicht gelesen werden, muss die gemeinsame Sperre nicht hinzugefügt werden. Wenn Sie sie zum Schreiben lesen, ist dies nicht erforderlich Es ist besser, direkt eine exklusive Sperre hinzuzufügen. Es ist nicht erforderlich, eine gemeinsame Sperre zu verwenden.

Ein weiterer zu betonender Punkt ist, dass die Dateisperre nur für Benutzer wirksam ist, die sie gemäß den Regeln verwenden. Andernfalls verwenden Sie Ihre und einige verwenden sie nicht Es kommt zu Problemen und es treten immer noch Fehler auf. Nur wenn jeder die gleichen Regeln für die Dateisperre verwendet, können wir sicherstellen, dass bei der Freigabe der Datei keine Lese- oder Schreibfehler auftreten.


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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!