Maison > cadre php > Swoole > le corps du texte

Comment swoole détermine-t-il si fd est connecté ?

(*-*)浩
Libérer: 2019-12-16 13:57:44
original
5196 Les gens l'ont consulté

Comment swoole détermine-t-il si fd est connecté ?

Qu'est-ce qu'un battement de coeur ?

Comme son nom l'indique, le battement de coeur est un critère pour juger si une chose est vivante ou morte. En swoole, le battement de coeur est utilisé pour juger si une connexion est normale ou déconnectée.

Parlant du protocole TCP (Apprentissage recommandé : Tutoriel vidéo SWOOLE )

Nous savons tous qu'un logo de groupe de cinq yuans est une connexion réseau , create Il y a trois poignées de main pour une connexion et quatre poignées de main pour déconnecter une connexion. Que le serveur ou le client initie la fermeture de la connexion, il terminera le processus en quatre vagues. De cette façon, tout est parfait, le système recycle ce fd et la couche application peut également gérer les questions associées via onClose. rappel.

Qu'est-ce que fd ?

Le nom scientifique de fd est un descripteur de fichier. Dans la philosophie Unix selon laquelle tout est un fichier, ce fd est l'identifiant exposé par la couche système à la couche métier pour représenter une connexion réseau à cinq tuples. .

Vous pouvez simplement le comprendre comme un index. En exploitant ce fd, la couche système peut trouver la connexion correspondante et effectuer une série d'opérations, telles que l'envoi de données à l'élève du réseau, la fermeture de la connexion, etc.

Pourquoi le cœur bat-il ?

Comme mentionné tout à l'heure, si nous voulons fermer une connexion, nous pouvons lancer une opération de fermeture de connexion sur fd au niveau de la couche métier. Prenons swoole comme exemple :

$server->close($fd);
Copier après la connexion

Sous. Dans des circonstances normales, il terminera les quatre vagues (swoole aura un rappel onClose) et le système recyclera le fd pour l'allouer à d'autres connexions.

Alors pourquoi le système recycle-t-il les fd ? Parce que les ressources fd sont limitées, elles doivent donc être réutilisées.

Mais dans certains cas, comme le débranchement soudain du câble réseau ou le débranchement du câble optique lors des exercices de Lanxiang, le serveur ne peut pas détecter l'anomalie de cette connexion, mais en fait la connexion a échoué s'il n'y en a pas. Mécanisme de recyclage, ce type de connexion utilisera tout le fd, ce qui empêchera le système d'accepter de nouvelles demandes de connexion, il existe donc un mécanisme de battement de cœur.

Quel est le mécanisme du rythme cardiaque ?

Le mécanisme de battement de cœur est une méthode fournie par la couche métier pour déterminer si une connexion est active, permettant au système de déterminer si une connexion a échoué. Il existe généralement deux méthodes d'implémentation :

1 :

Le client envoie régulièrement un paquet de battements de cœur pour indiquer au serveur que je suis toujours en vie. Le serveur vérifie régulièrement la liste de tous les clients pour voir si l'heure est venue. leur dernier paquet de battements de cœur est passé. S'il est trop long, il sera considéré qu'il n'y a pas de battement de cœur, cela sera considéré comme une connexion morte et la connexion sera fermée activement.

2 : Le serveur demande régulièrement à tous les clients, êtes-vous toujours en vie ? Si vous êtes en vie, donnez-moi un feedback. Les clients qui ne recevront pas de feedback seront tués sans pitié.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal