Un système logiciel complet est principalement composé de plusieurs processus travaillant ensemble, même s'ils se trouvent sur le même serveur. Une communication efficace entre les processus est donc cruciale.
En tant que langage de script, PHP ne réside pas dans les processus comme C++/Java, il utilise donc des connexions courtes pour se connecter aux services back-end.
Voix off : Un ami a dit que les extensions pouvaient être écrites en C ? (Apprentissage recommandé : Tutoriel vidéo PHP)
L'image ci-dessus est un scénario typique Le site PHP est déployé sur la machine A, et le cache memcache. est déployé sur la machine A. B, communique via des connexions courtes, le processus est le suivant :
(1) php établit une connexion courte TCP
(2) Envoyer des données selon le protocole Memcache
( 3) Recevez les données renvoyées par memcache ; (4) PHP ferme la connexion courte TCP Lorsque le trafic est faible, il n'y a aucun problème avec le processus ci-dessus ; . Lorsque le trafic du site Web est très important, la connexion courte peut devenir un goulot d'étranglement des performances. Existe-t-il une méthode d'optimisation ? Voix off : Établir et détruire des connexions prend du temps.Changeons de sujet, qu'est-ce que UNIX Domain Socket ?
UNIX Domain Socket est un mécanisme IPC. Il n'a pas besoin de passer par la pile de protocoles réseau, n'a pas besoin d'emballer et de décompresser, de calculer des sommes de contrôle, de conserver des numéros de séquence et des réponses, etc. transfère les données de la couche application d’un processus et les copie vers un autre processus. Voix off : IPC, Communication Inter-Processus. Il peut être utilisé pour deux processus non liés sur le même hôte et est en duplex intégral, fournissant un mécanisme IPC pour une livraison fiable des messages (pas de perte de message, pas de duplication, pas de confusion). Voix off : La parenté fait référence à une relation de processus "spéciale" telle qu'un processus père-fils ou un processus frère. On peut voir que l'efficacité du socket de domaine UNIX est bien supérieure à celle de la connexion courte TCP, mais il ne peut être utilisé que pour la communication de processus entre le même hôte, et les applications PHP et les services back-end sont souvent déployé dans différents Sur la machine, peut-il être utilisé à des fins d'optimisation à ce moment-là ?Le schéma d'architecture simple optimisé est le suivant :
(1) Déployer un proxy local sur le serveur d'applications php ; (2) php et le proxy local utilisent UNIX Domain Socket pour communiquer (3) le proxy local communique avec le service back-end via une connexion longue TCP ; > Cela améliore considérablement l'efficacité de la communication et élimine la surcharge liée à l'établissement et à la fermeture de connexions courtes TCP pour chaque requêteCe 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!