心跳是什麼?
顧名思義,心跳是判斷一個事物生還是死的一個標準,在swoole裡,心跳是指用來判斷一個連結是正常還是斷開的。
從TCP協定說起 (建議學習: swoole視訊教學)
)
我們時所建立一個五元組識別時一個連結有三次握手,而斷開一個連結有四次揮手。不管是伺服器還是客戶端發起連線的關閉,都會完整的走完四次揮手的過程,這樣,一切很完美,系統回收這個fd,應用層也可以透過onClose回調處理相關的事情.
fd是什麼?fd學名是文件描述符,在unix的哲學就是一切皆文件中,這個fd就是系統層暴露給業務層的用來表示一個五元組網絡連接的標識。
你可以簡單的理解為一個索引,透過對這個fd的操作,系統層可以找到相應的連接而且進行的一系列操作,如發送資料到網瞳,進行連接關閉等等。
為什麼要心跳?剛才提到,如果我們要關閉某個連接,我們可以在業務層對fd發起關閉連接的操作,以swoole為例:
$server->close($fd);
正常情況下,都會走完整個四次揮手,(swoole會有onClose回呼),系統回收fd,以待分配給其他的連接。
那系統為什麼要回收fd,因為fd資源是有限的,所以必要重複利用。
但在某些情況下,如突然拔掉網線或藍翔演習挖斷光纜,服務端並不能感知到這個連接的異常,但實際上是這個連接已經失效了,如果沒有一個回收機制,這類連接將用光所有的fd,導致系統不再能接受新的連接請求,所以就有了心跳機制。
什麼是心跳機制?心跳機制就是一個業務層來提供一個連結是否存活的一個方法,讓系統能判定一個連結是否失效。一般有兩種實現方式:1:
客戶端定時發送一個心跳包,告訴伺服器我還活著,伺服器定時檢測所有客戶端列表,看他們最後一個心跳包的時間是否過長,如果過長,則認為已無心跳,判定為死連接,主動關閉這個連接。 ###2: 伺服器定時詢問所有的客戶端,你們還活著麼?如果活著,給我回饋,沒得到回饋的客戶端,格殺勿論。 ###以上是swoole怎麼判斷fd是否連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器