Maison > développement back-end > Problème PHP > PHP a-t-il un verrou ?

PHP a-t-il un verrou ?

王林
Libérer: 2023-02-26 07:26:01
original
4068 Les gens l'ont consulté

PHP a-t-il un verrou ?

Verrouillage de fichiers

Ce type de verrouillage est plus courant. Par exemple, après le démarrage de mysql, php-fpm, il y aura un. fichier pid enregistrant l'ID du processus. Ce fichier est le verrou de fichier.

Ce verrou peut empêcher un processus de s'exécuter de manière répétée. Par exemple, lors de l'utilisation de crontab, une tâche est limitée à être exécutée toutes les minutes, mais le processus peut s'exécuter pendant plus d'une minute si le verrouillage du processus n'est pas activé. utilisé pour résoudre le conflit, les deux processus seront ensemble Il y aura des problèmes d'exécution.

Un autre avantage de l'utilisation du verrouillage de fichier PID est qu'il est pratique pour le processus de s'envoyer des signaux d'arrêt ou de redémarrage. Par exemple, la commande pour redémarrer php-fpm est :

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
Copier après la connexion

Envoyer le signal USR2 au processus enregistré dans le fichier pid. Le signal appartient à la communication du processus et sera abordé dans un autre chapitre.

Verrous Mutex et verrous en lecture-écriture

Mutex dans le module de synchronisation :

Mutex est un mot composé, mutuel exclusion. Utilisez pecl pour installer le module de synchronisation, pecl install sync. SyncMutex dans la documentation n'a que deux méthodes, verrouiller et déverrouiller.

Verrouillage en lecture-écriture dans le module de synchronisation :

La méthode de SyncReaderWriter est similaire, readlock, readunlock, writelock, writeunlock peuvent apparaître par paires.

Event in sync module :

Cela ressemble plus à Cond in golang, wait() bloque et fire() réveille un processus bloqué par Event. Il existe un bon article présentant Cond. On peut voir que Cond est une utilisation fixe des verrous, et il en va de même pour SyncEvent. Les exemples de la documentation PHP montrent que la méthode fire() semble être utilisée dans les applications web.

Sémaphores dans le module de synchronisation :

Le document SyncSemaphore montre que la différence entre celui-ci et Mutex est que Sémaphore peut être utilisé par plusieurs processus (ou threads) à la fois. time Get, et Mutex ne peut être obtenu que par un à la fois. Ainsi, dans le constructeur de SyncSemaphore, il existe un paramètre qui spécifie le nombre de processus par lesquels le sémaphore peut être obtenu.

Tutoriel recommandé : Tutoriel vidéo 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