正常情況下客戶端中斷TCP連接時,會發送一個FIN包,進行4次斷開握手來通知服務器,但一些例外情況下,如客戶端突然斷電斷網或者網路例外,服務器可能無法得知客戶端已斷開連接,
尤其是移動網路,TCP連接非常不穩定,所以需要一套機制來保證服務器和客戶端之間連接的有效性,
Swoole擴展本身內置了這種機制,開發者只需要配置一個引數即可啟用,Swoole在每次收到客戶端資料會記錄一個時間戳,當客戶端在一定時間內未向服務器端發送資料,那服務器會自動切斷連接,
使用方法:

上面的設定就是每5秒偵測一次心跳,一個TCP連接如果在10秒內未向服務器端發送資料,將會被切斷,
高級用法:
使用swoole_server::heartbeat()函式手工檢測心跳是否到期,此函式會回傳閑置時間超過heartbeat_idle_time的所有TCP連接,程式中可以將這些連接做一些操作,如發送資料或關閉連接,
以上是文章全部內容,有需要學習交流的友人請加入交流群的咱們一起,有問題一起交流,一起進步!前提是你是學技術的,感謝閱讀!
點此加入該群
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100303.html
標籤:PHP
