Wenn der Client unter normalen Umständen die TCP-Verbindung unterbricht, sendet er ein FIN-Paket und führt 4 Trennungs-Handshakes durch, um den Server zu benachrichtigen. B. einem plötzlichen Stromausfall oder einer Netzwerkanomalie auf der Clientseite, kann der Server jedoch möglicherweise nicht erkennen, dass der Client die Verbindung getrennt hat.
Besonders bei Mobilfunknetzen TCP-Verbindungen sind sehr instabil, daher ist ein Mechanismus erforderlich, um die Gültigkeit der Verbindung zwischen Server und Client sicherzustellen.
Swoole-Erweiterung selbst verfügt über diesen integrierten Mechanismus, und Entwickler müssen nur einen Parameter konfigurieren, um ihn zu aktivieren. Swoole zeichnet jedes Mal einen Zeitstempel auf, wenn der Client innerhalb eines bestimmten Zeitraums keine Daten an den Server sendet, unterbricht der Server automatisch die Verbindung. (Empfohlenes Lernen: Swoole-Video-Tutorial)
Verwendung:
$serv->set(array( 'heartbeat_check_interval' => 5, 'heartbeat_idle_time' => 10, ));
Die obige Einstellung dient dazu, alle 5 Sekunden einen Herzschlag zu erkennen, wenn eine TCP-Verbindung innerhalb von 10 Sekunden besteht Es werden keine Daten an den Server gesendet, diese werden unterbrochen.
Erweiterte Verwendung:
Verwenden Sie die Funktion swoole_server::heartbeat(), um manuell zu erkennen, ob der Heartbeat abgelaufen ist. Diese Funktion gibt alle TCP-Verbindungen zurück, die länger als heartbeat_idle_time im Leerlauf waren. Das Programm kann einige Vorgänge für diese Verbindungen ausführen, z. B. das Senden von Daten oder das Schließen der Verbindung.
Das obige ist der detaillierte Inhalt vonSo verhindern Sie, dass Swoole offline ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!