Heim  >  Artikel  >  PHP-Framework  >  So verhindern Sie, dass Swoole offline ist

So verhindern Sie, dass Swoole offline ist

尚
Original
2019-12-06 14:38:212644Durchsuche

So verhindern Sie, dass Swoole offline ist

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn