Maison  >  Article  >  développement back-end  >  PHP implémente le principe de verrouillage et de déverrouillage

PHP implémente le principe de verrouillage et de déverrouillage

小云云
小云云original
2018-03-10 10:24:552971parcourir

PHP n'a pas une prise en charge parfaite des threads, et même son déploiement sur un serveur httpd basé sur le modèle de thread entraînera certains problèmes. Cependant, même avec PHP sous le modèle multi-processus, il est inévitable que plusieurs processus accèdent au modèle. même ressource ensemble. Par exemple, un cache de données partagé par l'ensemble du programme ou un processus spécifique doit être mis en file d'attente en raison de contraintes de ressources, et un identifiant unique est généré pour chaque utilisateur. Le langage PHP lui-même ne fournit pas de mécanismes d'exclusion mutuelle et de verrouillage des processus, ce qui rend la programmation dans ces situations difficile. Les options disponibles actuellement connues sont les suivantes :

  • Utiliser le mécanisme de verrouillage MySQL pour obtenir un verrouillage mutuel. exclusion. L'inconvénient est que cela augmente la charge de connexion sur le serveur de base de données et rend le programme dépendant du service de base de données pour fonctionner correctement.

  • Utilisez le mécanisme de verrouillage des fichiers. C'est-à-dire que la fonction flock est utilisée pour implémenter des mécanismes de verrouillage et d'exclusion mutuelle via des fichiers afin de simuler le mode de fonctionnement des primitives de verrouillage sous le modèle de programmation général. Cette méthode est devenue un élément nécessaire pour protéger l'intégrité des données dans le passé lorsque des fichiers texte brut étaient utilisés comme moteurs de stockage. Elle est désormais également assez courante lorsque des fichiers texte sont utilisés comme support de mise en cache. PmWiki utilise probablement également ce mécanisme pour rappeler à plusieurs personnes lorsqu'elles modifient une page en même temps. Cependant, le mécanisme de verrouillage de fichiers appellera en quelque sorte la fonction de verrouillage de fichiers sur le système d'exploitation hôte. Par conséquent, lorsque vous l'utilisez, vous devez vérifier si le système d'exploitation du serveur fournit un mécanisme de verrouillage de fichiers complet et fiable pour l'environnement PHP.

  • Utilisez le comptage de l'espace mémoire partagé. PHP peut utiliser la fonction shmop_open pour ouvrir un espace mémoire et partager des données entre les processus de service. Afin de garantir un accès mutuellement exclusif et sécurisé aux données partagées, un ensemble de fonctions telles que sem_get, sem_acquire et sem_release peuvent être utilisées pour implémenter le partage. mécanisme de verrouillage de comptage. Cette méthode est en réalité implémentée en arrière-plan en appelant le service ipc du système.

Recommandations associées :

Comment verrouiller et déverrouiller des fichiers avec PHP

PHP ajoute Lock réalise le simultané fonction snap-up

Explication détaillée de la fonction PHP de verrouillage des fichiers à l'aide de flock

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