>  기사  >  PHP 프레임워크  >  swoole은 fd가 연결되어 있는지 어떻게 확인합니까?

swoole은 fd가 연결되어 있는지 어떻게 확인합니까?

(*-*)浩
(*-*)浩원래의
2019-12-16 13:57:445116검색

swoole은 fd가 연결되어 있는지 어떻게 확인합니까?

심장박동이란 무엇인가요?

이름에서 알 수 있듯이 심장박동은 사물의 살아있음과 죽음을 판단하는 기준입니다. 스울에서는 심장박동을 통해 연결이 정상인지 끊어졌는지 판단합니다.说 TCP 프로토콜에서

(추천 학습:

SWOOLE 비디오 튜토리얼 ) 우리 모두는 5달러 그룹이 네트워크 연결을 로고하고, 3번의 핸드셰이크를 만들고, 4개의 웨이브로 연결을 끊는다는 것을 알고 있습니다. 서버 또는 클라이언트가 연결 종료를 시작하는지 여부에 관계없이 이러한 방식으로 모든 것이 완벽하게 완료됩니다. 시스템은 이 fd를 재활용하고 애플리케이션 계층도 onClose를 통해 관련 문제를 처리할 수 있습니다. 콜백.

fd는 무엇인가요?

fd의 학명은 파일 설명자입니다. 모든 것이 파일이라는 Unix 철학에서 이 fd는 5튜플 네트워크 연결을 나타내기 위해 시스템 계층에서 비즈니스 계층에 노출되는 식별자입니다.

이 fd를 연산하면 시스템 계층에서 해당 연결을 찾고 네트워크 퓨필로 데이터를 전송하고 연결을 닫는 등 일련의 작업을 수행할 수 있습니다.

심장은 왜 뛰나요?

방금 언급한 바와 같이, 연결을 닫고 싶다면 비즈니스 계층에서 fd의 연결을 닫는 작업을 시작할 수 있습니다. swoole을 예로 들어보겠습니다.

$server->close($fd);

일반적인 상황에서는 4개의 웨이브를 완료합니다. (swoole onClose 콜백이 있습니다.) 시스템은 fd를 재활용하여 다른 연결에 할당합니다.

그렇다면 시스템은 왜 fd를 재활용하는 걸까요? fd 자원은 제한되어 있으므로 재사용해야 합니다.

그러나 Lanxiang 드릴 중에 갑자기 네트워크 케이블을 뽑거나 광케이블을 파내는 등의 경우 서버가 연결의 이상을 감지할 수 없지만 실제로는 연결이 만료된 것입니다. 클래스 연결은 모든 fd를 사용하므로 시스템이 더 이상 새 연결 요청을 허용하지 않으므로 하트비트 메커니즘이 있습니다.

심장박동 메커니즘이 무엇인가요?

하트비트 메커니즘은 연결이 살아 있는지 확인하기 위해 비즈니스 계층에서 제공하는 방법으로, 시스템에서 연결이 만료되었는지 확인할 수 있습니다. 일반적으로 두 가지 구현 방법이 있습니다.

1:

클라이언트는 서버에 내가 아직 살아 있음을 알리기 위해 정기적으로 하트비트 패킷을 보냅니다. 서버는 정기적으로 모든 클라이언트 목록을 확인하여 마지막 하트비트 패킷 시간이 너무 짧은지 확인합니다. 너무 길면 하트비트가 없는 것으로 간주하여 연결이 끊어진 것으로 판단하고 적극적으로 연결을 닫습니다.

2: 서버는 정기적으로 모든 클라이언트에게 묻습니다. 아직 살아 있나요? 살아계시다면 피드백을 주세요. 피드백을 받지 못한 클라이언트는 무자비하게 죽임을 당합니다.

위 내용은 swoole은 fd가 연결되어 있는지 어떻게 확인합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.