Maison > Article > développement back-end > Explication de base des protocoles, processus et threads de communication en PHP
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.
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.
名称 | 注释 |
---|---|
HTTP | Hypertext Transfer Protocol 超文本传输协议,显示网页 |
DNS | Domain Name System 域名系统 |
FTP | File Transfer Protocol 文件传输协议 |
SFTP | SSH File Transfer Protocol 安全文件传送协议 |
SSH | Secure Shell |
名称 | 注释 |
---|---|
TCP | Transmission Control Protocol 三次握手传输协议 |
UDP |
名称 | 注释 |
---|---|
IP | Internet Protocol |
ICMP | Internet Control Message Protocol,主要用于路由发送错误报告 |
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.
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
Le numéro de port HTTP par défaut est 80 et le numéro de port HTTPS est 443.
Le protocole HTTP lance toujours une requête du client et renvoie une réponse du serveur. Voir l'image ci-dessous
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.
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.
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.
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 | 服务器端错误--服务器未能实现合法的请求 |
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.
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
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.
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.
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.
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!