Maison  >  Article  >  développement back-end  >  Explication de base des protocoles, processus et threads de communication en PHP

Explication de base des protocoles, processus et threads de communication en PHP

不言
不言original
2018-08-14 14:47:482014parcourir

Ce que cet article vous apporte est une explication de base des protocoles de communication, des processus et des threads en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Compilé quelques bases liées à PHP. N'hésitez pas à y jeter un oeil.

Protocole de communication

Le protocole de communication réseau est un langage réseau universel qui fournit un support de communication pour les réseaux interconnectés connectant différents systèmes d'exploitation et différentes architectures matérielles.

Couche d'application

名称 注释
HTTP Hypertext Transfer Protocol 超文本传输协议,显示网页
DNS Domain Name System 域名系统
FTP File Transfer Protocol 文件传输协议
SFTP SSH File Transfer Protocol 安全文件传送协议
SSH Secure Shell

Couche de communication

名称 注释
TCP Transmission Control Protocol 三次握手传输协议
UDP

Couche réseau

名称 注释
IP Internet Protocol
ICMP Internet Control Message Protocol,主要用于路由发送错误报告

HTTP

HTTP est l'abréviation de Hyper Text Transfer Protocol. Son développement est le résultat de la coopération entre le World Wide Web Consortium et l'Internet Engineering Task Force (IETF), qui ont finalement publié une série de RFC (RFC 1945) définissant la version HTTP/1.0. La plus connue d’entre elles est la RFC 2616. La RFC 2616 définit une version couramment utilisée aujourd'hui : HTTP 1.1.

Le protocole HTTP (HyperText Transfer Protocol, Hypertext Transfer Protocol) est un protocole de transfert utilisé pour transférer l'hypertexte du serveur WWW vers le navigateur local. Cela peut rendre le navigateur plus efficace et réduire la transmission réseau. Il garantit non seulement que l'ordinateur transmet correctement et rapidement les documents hypertextes, mais détermine également quelle partie du document est transmise et quelle partie du contenu est affichée en premier (comme le texte avant les graphiques), etc.

HTTP est un protocole de couche application, composé de requêtes et de réponses, et est un modèle client-serveur standard. HTTP est un protocole sans état.

Position dans la pile de protocoles TCP/IP

Le protocole HTTP est généralement porté au-dessus du protocole TCP, et parfois au-dessus de la couche de protocole TLS ou SSL. devient notre souvent appelé HTTPS. Comme le montre la figure ci-dessous

Explication de base des protocoles, processus et threads de communication en PHP

Le numéro de port HTTP par défaut est 80 et le numéro de port HTTPS est 443.

Modèle de réponse aux requêtes HTTP

Le protocole HTTP lance toujours une requête du client et renvoie une réponse du serveur. Voir l'image ci-dessous

Explication de base des protocoles, processus et threads de communication en PHP

Cela limite l'utilisation du protocole HTTP et ne peut pas envoyer de messages au client lorsque celui-ci n'initie pas de requête.
Le protocole HTTP est un protocole sans état. Il n'y a aucune correspondance entre cette requête et la dernière requête du même client.

Requête HTTP

Le message de requête envoyé par le client au serveur comprend le format suivant :

  • ligne de requête

  • En-tête de requête

  • Il se compose de quatre parties : une ligne vierge et des données de requête.

Obtenir un exemple de requête

GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8

Exemple de requête POST

POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley

Première partie : Ligne de requête, la première ligne indique le type de requête, et version http1.1.
Partie 2 : En-tête de requête, ligne 2 à ligne 6.
La troisième partie : ligne vierge, la ligne vierge de la septième ligne.
Partie 4 : Demander des données, ligne 8.

Réponse HTTP

Généralement, le serveur renverra un message de réponse HTTP après avoir reçu et traité la demande du client.
La réponse HTTP se compose également de quatre parties

  • Ligne d'état

  • En-tête du message

  • Ligne vide et corps de réponse.

HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<!--body goes here-->

La première partie de la ligne d'état : se compose de trois parties : le numéro de version du protocole HTTP, le code d'état et le message d'état.
La deuxième partie de l'en-tête du message : utilisée pour décrire certaines informations supplémentaires à utiliser par le client
La troisième partie de la ligne vide : la ligne vide après l'en-tête du message est nécessaire
La quatrième partie de le texte de réponse : le serveur revient au message texte Client.

Code d'état HTTP

Le code d'état se compose de trois chiffres. Le premier chiffre définit la catégorie de réponse, qui est divisée en cinq catégories

状态 注释
1xx 指示信息--表示请求已接收,继续处理
2xx 成功--表示请求已被成功接收、理解、接受
3xx 重定向--要完成请求必须进行更进一步的操作
4xx 客户端错误--请求有语法错误或请求无法实现
5xx 服务器端错误--服务器未能实现合法的请求
.

Processus et threads

Le concept de processus est la base de la structure du système d'exploitation. Les concepteurs de Multics ont utilisé pour la première fois ce terme technique dans les années 1960, et il est plus général qu'un simple devoir. Concernant la définition du processus, il s'agit de la suivante

  • Un programme en cours d'exécution.

  • Instance d'un programme exécuté sur un ordinateur.

  • Une entité qui peut être attribuée et exécutée par un processeur.

  • Unité d'activité décrite par un seul thread d'exécution séquentiel, un état actuel et un ensemble de ressources système associées.

Pourquoi les processus sont-ils conçus ?

Il est très difficile de concevoir un logiciel système capable de coordonner diverses activités différentes.

De nombreuses tâches sont en cours d'exécution à tout moment, et chaque tâche comprend de nombreuses étapes qui nécessitent une exécution séquentielle, il n'est donc pas possible d'analyser des combinaisons de séquences d'heures. Faute d'une méthode au niveau du système pour coordonner et coopérer entre toutes les activités, les programmeurs doivent adopter leurs propres méthodes ad hoc basées sur leur compréhension de l'environnement contrôlé par le système d'exploitation. Cependant, cette méthode est très fragile, notamment face aux petites erreurs de programmation, car ces erreurs n'apparaissent que lorsque de rares occurrences de séries temporelles se produisent.

Le diagnostic peut être difficile en raison de la nécessité de distinguer ces erreurs des erreurs logicielles d'application et des erreurs matérielles. Il est également difficile de détecter les erreurs à temps et d’en déterminer la cause, car il est difficile d’identifier le scénario précis dans lequel l’erreur s’est produite. De manière générale, les 4 principales raisons de ce type d'erreur sont les suivantes :

  • Synchronisation incorrecte

  • Échec du mutex.

  • Fonctionnement incertain du programme

  • Impasse

Un système est nécessaire pour résoudre ces problèmes Méthodes de niveau surveiller l'exécution de différents programmes dans le processeur. La notion de processus en constitue la base.

Le processus peut donc être considéré comme composé de trois parties

  • Un programme qui peut être exécuté

  • Qu'est-ce que le programme besoins Données pertinentes

  • Contexte d'exécution du programme

Création de processus

Traditionnellement, la manière dont le système d'exploitation crée des processus est très difficile pour l'utilisateur et les applications sont transparentes, ce qui est également courant dans les systèmes d'exploitation contemporains. Mais il serait utile de permettre à un processus de déclencher la création d'un autre processus.

Par exemple, un processus de programme peut engendrer un autre processus pour accepter les données générées par l'application et organiser les données dans un format adapté à une analyse ultérieure. De nouveaux processus s'exécutent en parallèle avec l'application et sont activés lorsque de nouvelles données sont disponibles.

Ce schéma est très utile pour structurer des applications, par exemple, un processus serveur (tel qu'un serveur d'impression, un serveur de fichiers) peut générer un nouveau processus pour chaque requête qu'il traite. Lorsque le système d'exploitation génère un nouveau processus en réponse à une demande explicite d'un autre processus, cette action est appelée "process forking".

Lorsqu'un processus en bifurque un autre, le premier est appelé processus parent et le processus forké est appelé processus enfant. Dans une situation typique, les processus associés nécessitent une communication et une coopération entre les agents. Pour les programmeurs, la collaboration est une tâche très difficile.

Qu'est-ce qu'un thread

Un thread est un flux d'exécution d'un processus. Un thread ne peut pas allouer de ressources système. Il fait partie du processus et constitue une unité d'exécution indépendante plus petite que le processus.

La relation entre les processus et les threads

Un processus est comme un propriétaire, possédant un terrain (ressources du système), et un thread est comme un locataire (thread, exécutant le processus d'agriculture). Chaque propriétaire (processus) n’a besoin que d’un seul locataire actif (thread).

Processus - la plus petite unité d'allocation de ressources, relativement robuste, les plantages n'affectent généralement pas les autres processus, mais le changement de processus consomme des ressources et est moins efficace.

Thread - la plus petite unité d'exécution de programme. Il n'a pas d'espace d'adressage indépendant. Si un thread meurt, l'ensemble du processus peut mourir, mais il économise des ressources et a une efficacité de commutation élevée.

Processus et threads courants en PHP

  • Dans les applications Web, chaque fois que nous accédons à php, nous créons un processus PHP, et bien sûr nous créerons également au moins un Fil PHP

  • PHP utilise pcntl pour la programmation multi-processus

  • PHP utilise pthreads pour la programmation multi-thread

  • Chaque processus de nginx n'a qu'un seul thread, et chaque thread peut gérer l'accès de plusieurs clients

  • php-fpm utilise un modèle multi-processus, et chaque processus n'a que un thread. Les threads ne peuvent gérer qu'un seul accès client

  • Apache peut utiliser un modèle multi-processus ou un modèle multi-thread, selon le SAPI utilisé

Recommandations associées :

Cinq façons de communiquer entre AS3 et PHP (basé sur le protocole HTTP)_Tutoriel PHP

Communication entre les processus PHP et Linux

Paramètres de requête de publication du protocole HTTP en PHP, tutoriel PHP post request_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!

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