Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert das Sperr- und Entsperrprinzip

PHP implementiert das Sperr- und Entsperrprinzip

小云云
小云云Original
2018-03-10 10:24:552971Durchsuche

PHP bietet keine perfekte Thread-Unterstützung, und selbst die Bereitstellung auf einem httpd-Server basierend auf dem Thread-Modell führt zu einigen Problemen. Allerdings ist es selbst bei PHP unter dem Multiprozessmodell unvermeidlich, dass mehrere Prozesse darauf zugreifen dieselbe Ressource zusammen. Beispielsweise muss ein vom gesamten Programm gemeinsam genutzter Datencache oder ein bestimmter Prozess aufgrund von Ressourcenbeschränkungen in die Warteschlange gestellt werden, und für jeden Benutzer wird eine eindeutige Kennung generiert. Die PHP-Sprache selbst bietet keine gegenseitigen Ausschluss- und Sperrmechanismen für Prozesse, was die Programmierung in diesen Situationen erschwert. Die derzeit bekannten verfügbaren Optionen sind die folgenden:

  • Verwendung des MySQL-Sperrmechanismus, um einen gegenseitigen Mechanismus zu erreichen Ausschluss. Der Nachteil besteht darin, dass dadurch die Verbindungslast auf dem Datenbankserver erhöht wird und das Programm für die ordnungsgemäße Funktion auf den Datenbankdienst angewiesen ist.

  • Verwenden Sie den Dateisperrmechanismus. Das heißt, die Flock-Funktion wird zum Implementieren von Sperr- und gegenseitigen Ausschlussmechanismen über Dateien verwendet, um den Arbeitsmodus zum Sperren von Grundelementen unter dem allgemeinen Programmiermodell zu simulieren. Diese Methode wurde in der Vergangenheit zu einem notwendigen Element zum Schutz der Datenintegrität, als reine Textdateien als Speicher-Engines verwendet wurden. Heute ist sie auch weit verbreitet, wenn Textdateien als Caching-Medien verwendet werden. PmWiki nutzt diesen Mechanismus wahrscheinlich auch, um mehrere Personen daran zu erinnern, wenn sie gleichzeitig eine Seite bearbeiten. Der Dateisperrmechanismus ruft jedoch in gewisser Weise die Dateisperrfunktion des Host-Betriebssystems auf. Wenn Sie ihn verwenden, müssen Sie daher prüfen, ob das Server-Betriebssystem einen vollständigen und zuverlässigen Dateisperrmechanismus für die PHP-Umgebung bereitstellt.

  • Nutzen Sie die Zählung des gemeinsam genutzten Speicherplatzes. PHP kann die Funktion shmop_open verwenden, um einen Speicherraum zu öffnen und Daten zwischen Dienstprozessen auszutauschen. Um einen sich gegenseitig ausschließenden und sicheren Zugriff auf gemeinsam genutzte Daten zu gewährleisten, kann eine Reihe von Funktionen wie sem_get, sem_acquire und sem_release zum Implementieren der gemeinsam genutzten Daten verwendet werden Zählverriegelungsmechanismus. Diese Methode wird tatsächlich im Hintergrund implementiert, indem der IPC-Dienst des Systems aufgerufen wird.

Verwandte Empfehlungen:

So sperren und entsperren Sie Dateien mit PHP

PHP fügt Lock hinzu und realisiert die Gleichzeitigkeit Snap-Up-Funktion

Detaillierte Erläuterung der PHP-Funktion zum Sperren von Dateien mithilfe von Flock

Das obige ist der detaillierte Inhalt vonPHP implementiert das Sperr- und Entsperrprinzip. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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