Multi-threading en PHP
PHP ne prend pas en charge le multi-threading par défaut Pour utiliser le multi-threading, vous devez installer le. pthread et que vous devez installer l'extension pthread, vous devez utiliser le paramètre --enable-maintainer-zts pour recompiler PHP. Ce paramètre spécifie le mode thread-safe lors de la compilation de PHP.
Sécurité des threads (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
Le multi-threading est un facteur qui rend un programme agité avant. en utilisant le multi-threading, vous devez d'abord considérer les problèmes de sécurité des threads :
Sécurité des threads : la sécurité des threads est un terme en programmation, ce qui signifie que lorsqu'une fonction ou une bibliothèque de fonctions est appelée dans un environnement multithread, elle peut être traité correctement Les variables partagées entre plusieurs threads permettent de compléter correctement les fonctionnalités du programme.
En multi-threading traditionnel, puisque plusieurs threads partagent des variables, les problèmes suivants peuvent survenir :
Il existe un tableau global $arr = array (' a');;
Un thread obtient la longueur du tableau de 1;
Le thread B obtient la longueur du tableau de 1;
Un thread sort du tableau elements $a = array_pop($arr); $a = 'a';;
Le thread B fait également apparaître les éléments du tableau $b = array_pop($arr); $a = null;;
À ce moment-là, un événement étrange s'est produit dans le thread B. La longueur du tableau était visiblement supérieure à 0, ou rien n'a été sauté ;
Implémentation PHP
Le principal. sécurité des threads de PHP Le mécanisme TSRM est utilisé pour isoler les variables globales et les variables statiques. Les variables globales et les variables statiques sont copiées sur chaque thread utilise une sauvegarde du thread principal, évitant ainsi les conflits de variables et éliminant les problèmes de sécurité des threads.
L'encapsulation multithread de PHP garantit la sécurité des threads. Les programmeurs n'ont plus besoin d'envisager d'ajouter divers verrous aux variables globales pour éviter les conflits de lecture et d'écriture. Cela réduit également le risque d'erreurs et rend le code écrit plus sécurisé.
Mais le résultat est qu'une fois que le sous-thread commence à s'exécuter, le thread principal ne peut plus ajuster les détails d'exécution du sous-thread, et le thread perd la capacité de transmettre des messages entre les threads via des variables globales pour une certaine mesure.
Dans le même temps, une fois que PHP a activé l'option de sécurité des threads, il y aura des pertes supplémentaires lors de l'utilisation du mécanisme TSRM pour allouer et utiliser des variables. Par conséquent, dans un environnement PHP qui ne nécessite pas de multi-threading, utilisez la version ZTS (non-thread safety) de PHP Très bien.
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!