Dans des circonstances normales, lorsque le client interrompt la connexion TCP, il enverra un paquet FIN et effectuera 4 poignées de main de déconnexion pour avertir le serveur. Cependant, dans certaines situations anormales, telles qu'une panne de courant soudaine ou une anomalie du réseau côté client, le serveur peut ne pas être en mesure de savoir que le client s'est déconnecté.
Surtout pour les réseaux mobiles, Les connexions TCP sont très instables, un mécanisme est donc nécessaire pour garantir la validité de la connexion entre le serveur et le client.
L'extension Swoole elle-même intègre ce mécanisme, et les développeurs n'ont besoin de configurer qu'un seul paramètre pour l'activer. Swoole enregistrera un horodatage à chaque fois qu'il recevra des données client. Lorsque le client n'envoie pas de données au serveur dans un certain laps de temps, le serveur coupe automatiquement la connexion. (Apprentissage recommandé : tutoriel vidéo swoole)
Utilisation :
$serv->set(array( 'heartbeat_check_interval' => 5, 'heartbeat_idle_time' => 10, ));
Le paramètre ci-dessus consiste à détecter un battement de cœur toutes les 5 secondes si une connexion TCP est dans les 10 secondes. aucune donnée n'est envoyée au serveur, elle sera coupée.
Utilisation avancée :
Utilisez la fonction swoole_server::heartbeat() pour détecter manuellement si le battement de cœur a expiré. Cette fonction renvoie toutes les connexions TCP qui sont restées inactives plus longtemps que heartbeat_idle_time. Le programme peut effectuer certaines opérations sur ces connexions, comme l'envoi de données ou la fermeture de la connexion.
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!