Maison >Problème commun >Que signifie le mécanisme du rythme cardiaque ?
Le mécanisme de battement de cœur est un mécanisme qui envoie régulièrement une structure personnalisée [paquet de battement de cœur] pour faire savoir à l'autre partie qu'elle est toujours en vie afin de garantir la validité de la connexion. Il est envoyé à chaque heure fixe comme un battement de cœur. .
Le mécanisme de battement de coeur signifie :
La réception et l'envoi de données dans le réseau se font tous dans le système d'exploitation SOCKET est implémenté. Mais si cette prise a été débranchée, il y aura certainement des problèmes lors de l'envoi et de la réception de données. Mais comment déterminer si cette prise peut encore être utilisée ? Cela nécessite de créer 心跳机制
dans le système.
Recommandations d'apprentissage associées : PHP Programmation du débutant au compétent
En fait, TCP
a déjà implémenté pour nous un mécanisme appelé battement de cœur. Si vous définissez un battement de cœur, TCP enverra le nombre de battements de cœur que vous avez défini (par exemple, 2 fois) dans un certain laps de temps (par exemple, vous l'avez défini sur 3 secondes), et ces informations n'affecteront pas le protocole que vous avez défini. . Ce qu'on appelle le « battement de cœur » consiste à envoyer régulièrement une structure personnalisée (paquet de battement de cœur ou trame de battement de cœur) pour faire savoir à l'autre partie qu'elle est « en ligne ». pour garantir la validité du lien.
Le soi-disant paquet de battement de coeur, c'est que le client envoie régulièrement des informations simples au serveur pour lui dire que je suis toujours là. Le code consiste à envoyer un message fixe au serveur toutes les quelques minutes. Le serveur répondra avec un message fixe après l'avoir reçu. Si le serveur ne reçoit pas le message client dans quelques minutes, le client sera considéré comme déconnecté.
Par exemple, si un logiciel de communication n'est pas utilisé pendant une longue période, si vous souhaitez savoir si son statut est en ligne ou hors ligne, vous avez besoin d'un paquet de battement de cœur et envoyez et recevez régulièrement des paquets. Émetteur du contrat : il peut s'agir du client ou du serveur, selon ce qui est le plus pratique et le plus raisonnable. Généralement le client. Le serveur peut également interroger et envoyer périodiquement des battements de cœur.
心跳包
La raison pour laquelle on l'appelle paquet de battement de cœur est qu'il est envoyé à une heure fixe comme un battement de cœur pour indiquer au serveur que le client est toujours en vie. En fait, il s'agit de maintenir une connexion longue. Quant au contenu de ce paquet, il n'y a pas de réglementation particulière, mais il s'agit généralement d'un très petit paquet, ou d'un paquet vide contenant uniquement l'en-tête.
Dans le mécanisme TCP, il existe un mécanisme de paquet de battement de cœur, qui est une option TCP. Le paramètre par défaut du système est une fréquence de battement de cœur de 2 heures. Mais il ne peut pas détecter les pannes de courant de la machine, le débranchement des câbles réseau ou les déconnexions du pare-feu. De plus, la couche logique n’est peut-être pas si facile à gérer en cas de déconnexion.
En général, ce n’est pas grave si c’est juste utilisé pour vous maintenir en vie. 心跳包
De manière générale, cela est réalisé en envoyant des paquets vides au niveau de la couche logique. Le minuteur suivant envoie un paquet vide au client à un certain intervalle de temps, puis le client renvoie le même paquet vide. Si le serveur ne reçoit pas le paquet de retour envoyé par le client dans un certain laps de temps, il ne peut que le faire. déterminer Il a dit qu'il était hors ligne. Envoyez ou recevez simplement. Si le résultat est zéro, cela signifie qu'il est hors ligne.
Cependant, sous 长连接
, il se peut qu'il n'y ait pas d'échange de données pendant une longue période. Théoriquement, cette connexion est toujours connectée, mais en pratique, il est difficile de savoir s'il y a une panne sur le nœud intermédiaire. Ce qui est encore pire, c'est que certains nœuds (pare-feu) déconnecteront automatiquement les connexions qui n'ont aucune interaction de données au cours d'une certaine période de temps.
En ce moment, nous avons besoin de notre paquet de battements de cœur pour maintenir de longues connexions et les maintenir en vie. Après avoir appris la déconnexion, la logique du serveur peut avoir besoin de faire certaines choses, comme nettoyer les données après la déconnexion et la reconnexion. Bien entendu, cela est naturellement fait par la couche logique en fonction des besoins. En général, les paquets de battements de cœur sont principalement utilisés pour le traitement du maintien en vie et de la déconnexion des connexions longues. Pour les applications générales, un temps de jugement de 30 à 40 secondes est relativement bon. Si les exigences sont vraiment élevées, réglez-la sur 6 à 9 secondes.
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!