Heim >Backend-Entwicklung >PHP-Problem >Hat PHP eine Sperre?

Hat PHP eine Sperre?

王林
王林Original
2019-10-10 11:52:534092Durchsuche

Hat PHP eine Sperre?

Dateisperre

Diese Art der Sperre kommt häufiger vor, nachdem MySQL, PHP-FPM gestartet wurde PID-Datei, die die Prozess-ID aufzeichnet. Diese Datei ist die Dateisperre.

Diese Sperre kann verhindern, dass ein Prozess wiederholt ausgeführt wird. Wenn Sie beispielsweise crontab verwenden, ist die Ausführung einer Aufgabe pro Minute begrenzt, der Prozess kann jedoch länger als eine Minute ausgeführt werden Zur Lösung des Konflikts werden die beiden Prozesse zusammen ausgeführt. Es treten Probleme bei der Ausführung auf.

Ein weiterer Vorteil der Verwendung der PID-Dateisperre besteht darin, dass der Prozess bequem Stopp- oder Neustartsignale an sich selbst senden kann. Der Befehl zum Neustart von php-fpm lautet beispielsweise:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

Senden Sie das USR2-Signal an den in der PID-Datei aufgezeichneten Prozess. Das Signal gehört zur Prozesskommunikation und wird in einem anderen Kapitel geöffnet.

Mutex-Sperren und Lese-/Schreibsperren

Mutex im Sync-Modul:

Mutex ist ein zusammengesetztes Wort, gegenseitig Ausschluss. Verwenden Sie pecl, um das Synchronisierungsmodul zu installieren, pecl install sync. SyncMutex verfügt in der Dokumentation nur über zwei Methoden: Sperren und Entsperren.

Lese-/Schreibsperre im Synchronisierungsmodul:

Die Methode von SyncReaderWriter ist ähnlich, Readlock, Readunlock, Writelock, Writeunlock können paarweise auftreten.

Event im Sync-Modul:

Es fühlt sich eher so an, als ob Cond in Golang, wait() blockiert und fire() einen durch Event blockierten Prozess aufweckt. Es gibt einen guten Artikel, der Cond vorstellt. Es ist ersichtlich, dass Cond eine feste Verwendung von Sperren ist, und das Gleiche gilt für SyncEvent. Die Beispiele in der PHP-Dokumentation zeigen, dass die Methode fire() offenbar in Webanwendungen verwendet wird.

Semaphore im Sync-Modul:

Das SyncSemaphore-Dokument zeigt, dass der Unterschied zwischen ihm und Mutex darin besteht, dass Semaphore von mehreren Prozessen (oder Threads) gleichzeitig verwendet werden kann time Get, und Mutex kann jeweils nur einzeln abgerufen werden. Daher gibt es im Konstruktor von SyncSemaphore einen Parameter, der angibt, wie viele Prozesse das Semaphor erhalten können.

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonHat PHP eine Sperre?. 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