>백엔드 개발 >PHP 문제 >PHP 긴 연결과 짧은 연결의 사용 시나리오

PHP 긴 연결과 짧은 연결의 사용 시나리오

(*-*)浩
(*-*)浩원래의
2019-09-09 11:34:082791검색

PHP 긴 연결과 짧은 연결의 사용 시나리오

짧은 연결

연결->데이터 전송->연결 닫기

예를 들어 HTTP는 브라우저와 서버가 HTTP 작업을 수행할 때마다 연결이 설정됩니다. .그러나 작업이 완료되면 연결이 중단됩니다.

구체적으로, 브라우저 클라이언트는 TCP 연결을 시작하고 설정합니다. -> 클라이언트가 HttpRequest 메시지를 보냅니다. -> 서버가 메시지를 받습니다. ->서버 핸들을 프런트 엔드에 보내고 즉시 소켓.close를 호출합니다. ->클라이언트는 응답 메시지를 받습니다. ->클라이언트는 결국 서버로부터 TCP 연결을 끊으라는 신호를 받습니다. ->클라이언트는 특히 close 메소드를 호출하여 TCP 연결을 끊습니다. (추천 학습: PHP 프로그래밍 초보부터 능숙까지 )

이렇게도 말할 수 있습니다. 짧은 연결은 SOCKET이 연결된 후 데이터를 보내고 받은 후 즉시 연결이 끊어지는 것을 의미합니다.

데이터 수신 후 연결이 끊어지기 때문에, 데이터가 접수 및 처리될 때마다 연락이 되지 않습니다. 이것이 HTTP 프로토콜이 상태 비저장인 이유 중 하나입니다.

긴 연결

연결->데이터 전송->연결 유지->데이터 전송->..........->한 쪽이 연결을 닫을 때까지(주로 클라이언트) 연결을 닫습니다.

긴 연결이란 SOCKET 연결을 설정한 후 사용 여부에 관계없이 연결 상태를 유지하지만 보안이 취약하다는 의미입니다.

HTTP의 짧은 링크와 긴 연결 선택:

HTTP는 상태 비저장입니다. 즉, 브라우저와 서버가 HTTP 작업을 수행할 때마다 연결이 설정되지만 작업이 완료되면 연결이 중단됩니다. . 클라이언트 브라우저에서 액세스하는 HTML 또는 기타 유형의 웹 페이지에 JavaScript 파일, 이미지 파일, CSS 파일 등과 같은 다른 웹 리소스가 포함되어 있는 경우 브라우저가 이러한 웹 리소스를 만날 때마다 HTTP 세션이 생성됩니다.

HTTP1.0과 비교했을 때 가장 큰 차이점은 지속적인 연결 지원이 추가되었다는 점이지만(최신 HTTP1.1에서는 명시적으로 Keep-Alive를 지정할 수 있는 것 같습니다), 여전히 Stateless, 즉 신뢰할 수 없습니다.

브라우저나 서버가 다음 코드 줄을 추가하면 Connection:keep-alive

TCP 연결은 전송 후에도 계속 열려 있으므로 브라우저는 동일한 연결을 통해 계속해서 요청을 보낼 수 있습니다. 연결을 유지하면 각 요청에 대해 새 연결을 설정하는 데 필요한 시간이 절약되고 대역폭도 절약됩니다.

긴 연결을 달성하려면 클라이언트와 서버 모두 긴 연결을 지원해야 합니다.

긴 연결과 짧은 연결은 언제 사용하나요?

긴 연결은 주로 빈번한 작업, 지점 간 통신에 사용되며 연결 수가 너무 많아서는 안됩니다. 각 TCP 연결에는 3단계 핸드셰이크가 필요하며, 이는 시간이 걸립니다. 각 작업을 먼저 연결한 후 작업하면 처리 속도가 많이 떨어지므로 각 작업 후에 연결이 끊어지지 않고 데이터가 직접 전송됩니다. 첫 번째 처리입니다. 패키지가 정상이므로 TCP 연결을 설정할 필요가 없습니다.

예: 데이터베이스 연결은 긴 연결을 사용합니다. 짧은 연결로 자주 통신하면 소켓 오류가 발생하고 소켓을 자주 생성하는 것도 리소스 낭비입니다.

웹 웹 사이트와 같은 HTTP 서비스는 일반적으로 짧은 링크를 사용합니다. 왜냐하면 긴 연결은 서버의 특정 리소스를 소비하는 반면, 웹 웹 사이트의 수천 또는 심지어 수억 명의 클라이언트와 같은 빈번한 연결은 일부 리소스를 절약하기 때문입니다. 긴 연결을 사용하고 동시에 수천 명의 사용자가 있는 경우 각 사용자가 하나의 연결을 점유하는 경우도 가능합니다. 따라서 동시성 양은 크지만, 빈번한 작업이 필요하지 않은 경우 각 사용자는 짧은 연결을 사용해야 합니다. 요컨대 상황에 따라 긴 연결과 짧은 연결의 선택이 달라집니다.

특정 네트워크 애플리케이션의 경우:

http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接

위 내용은 PHP 긴 연결과 짧은 연결의 사용 시나리오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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