>백엔드 개발 >PHP 문제 >PHP에서 긴 연결과 짧은 연결의 차이점은 무엇입니까

PHP에서 긴 연결과 짧은 연결의 차이점은 무엇입니까

青灯夜游
青灯夜游원래의
2021-10-11 18:04:231898검색

PHP에서 긴 연결과 짧은 연결의 차이점: 1. 짧은 연결은 SOCKET 연결이 이루어진 후 데이터를 보내고 받은 후 즉시 연결이 끊어지는 것을 의미하고, 긴 연결은 SOCKET 연결이 설정된 후 연결이 끊어지는 것을 의미합니다. 연결은 한쪽이 연결을 종료할 때까지 사용 여부에 관계없이 유지됩니다. 2. 짧은 연결에 비해 긴 연결은 보안 수준이 낮습니다.

PHP에서 긴 연결과 짧은 연결의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

짧은 연결

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

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

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

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

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

긴 연결

연결->데이터 전송->연결 유지->데이터 전송-> .........-> 연결을 닫는 것은 클라이언트입니다.

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

PHP 스크립트에 액세스할 때마다 모든 PHP 스크립트가 실행된 후에만 반환 결과를 얻습니다. 지속적으로 실행하기 위해 스크립트가 필요한 경우 작업 목적을 달성하려면 PHP 긴 연결을 사용해야 합니다.

일반적인 PHP 환경은 apache+php+linux이지만 apache에는 PHP 연결에 시간 제한이 있으므로 일반적으로 apache 서버는 이 연결 시간이 초과되면 자동으로 연결을 끊습니다.

이 경우 더 간단하고 편리한 방법은 PHP 페이지에서 set_time_limit(0)을 설정하는 것입니다(물론 php.ini 구성 파일에서도 설정할 수 있지만 이는 전체 환경에 영향을 미칩니다. 모두, 모든 연결을 제한하고 싶지는 않습니다. 장시간 연결하면 서비스 성능에 영향을 미칠 수 있습니다)

각 PHP 스크립트는 실행 시간을 제한하므로 set_time_limit를 통해 스크립트 실행 시간을 무제한으로 설정해야 합니다. 언제든지 스크립트의 반환 값을 출력하려면 플러시() 및 ob_flush()를 사용하여 서버 버퍼 영역을 지웁니다.

<?php
header("Content-Type: text/plain");
set_time_limit(0);
while (true) {// 持续执行的脚本  flush();
	ob_flush();
	sleep(5);
}
?>

실행한 후 5초마다 실행합니다. 이 방법을 통해 백그라운드 모니터링 프로그램, 예약된 실행 기능, 로그 분석, 데이터 정렬 및 기타 시간이 많이 걸리는 작업과 같은 많은 기능을 완료할 수 있습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 긴 연결과 짧은 연결의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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