首頁 >php框架 >Swoole >swoole怎麼保持不斷線

swoole怎麼保持不斷線

尚
原創
2019-12-06 14:38:212692瀏覽

swoole怎麼保持不斷線

正常情況下客戶端中斷TCP連線時,會傳送一個FIN包,進行4次斷開握手來通知伺服器。但在某些異常情況下,例如客戶端突然斷電斷網或網路異常,伺服器可能無法得知客戶端已斷開連線。

尤其是行動網絡,TCP連線非常不穩定,所以需要一套機制來確保伺服器和客戶端之間連線的有效性。

Swoole擴充功能本身內建了這個機制,開發者只需要配置一個參數即可啟用。 Swoole在每次收到客戶端資料會記錄一個時間戳,當客戶端在一定時間內未向伺服器端發送數據,那伺服器會自動切斷連線。 (建議學習: swoole影片教學

使用方法:

$serv->set(array(
    'heartbeat_check_interval' => 5,
    'heartbeat_idle_time' => 10,
));

上面的設定就是每5秒偵測一次心跳,一個TCP連線如果在10秒內未向伺服器端發送數據,將會被切斷。

進階用法:

使用swoole_server::heartbeat()函式手動偵測心跳是否到期。此函數會傳回閒置時間超過heartbeat_idle_time的所有TCP連線。程式中可以將這些連線做一些操作,例如發送資料或關閉連線。

以上是swoole怎麼保持不斷線的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn